我使用参数从jQuery调用struts2动作但不调用action方法。
但如果我在没有参数的情况下调用动作,那么它的工作效果非常好。
致电行动:
$('#redemptionForm').attr('action','sendRedempOTP?pbCardNo='+cardNo+'&mobile='+mobileNumber+'&isSearchByMobileNoFlag='+searchByMobileNoFlag);
Struts2操作详情:
<action name="sendRedempOTP" class="com.ndil.web.redemption.ViewGiftItemSlabsAction"
method="sendOTP">
<interceptor-ref name="basicStack" />
<result name="error">/jsp/balanceinquirymain2.jsp</result>
<result>/jsp/balanceinquirymain2.jsp</result>
</action>
动作类方法:
public String sendOTP() {
LOGGER.info("Send OTP called");
String cardNumber = request.getParameter("pbCardNo");
String mobile = request.getParameter("mobile");
String isSearchByMobileNoFlag = request.getParameter("isSearchByMobileNoFlag");
}
当我调用此动作时,它无效。 我得到以下异常:
No configuration found for the specified action: 'login' in namespace:
此代码有什么问题?
我的JSP页面:
<s:form action="#" validate="true" method="post" id="redemptionForm">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<table width="950" border="0" align="center" cellpadding="0" cellspacing="1" style="background-color: #999">
<tr>
<td style="background-color: #f1f1f1">
<table width="950" border="0" cellpadding="2" cellspacing="0" align="center">
<tr align="center">
<td class="fieldtxt" width="50%" align="right"><s:text name="redeem.cardNo" /></td>
<td width="50%" align="left"><s:property value="giftRedemptionVO.pbCardNo" /></td>
</tr>
<tr align="center">
<td class="fieldtxt" width="50%" align="right"><s:text name="redeem.mobileNo" /></td>
<td width="50%" align="left"><s:property value="giftRedemptionVO.mobileNo" /></td>
</tr>
<tr id="custNameRow" align="center">
<td class="fieldtxt" width="50%" align="right"><s:text name="redeem.total.available.shopping.value" /></td>
<td width="50%" align="left"><s:property value="giftRedemptionVO.totalAvailableAmount" /></td>
</tr>
</td>
</tr>
</table>
<td><s:submit value="Redeem(SendOTP)" cssClass="crt_btn" id="sendOtpButton" theme="simple"
</td>
</tr>
</table>
</s:form>
答案 0 :(得分:0)
Strust2不是用这种方式来获取参数。 你可以这样试试:
public void execute() {
String name = super.getRequest().getParameter("pbCardNo");
System.out.println("name:" + name);
}
或者您可以尝试这种方式:
private String pbCardNo;
public void setPbCardNod(String pbCardNo){}
public String getPbCardNod(){}
也许这样可以帮助你
答案 1 :(得分:0)
发送带有POST
的表单时,表单中的数据已经序列化,不需要像GET一样将值编码为QueryString参数;
始终使用 getters 和 setters 的私有属性来接收/公开数据,您几乎不需要从请求中读取内容;
您可能已将全局INPUT
结果映射到login
操作,并且正在触发该结果。如果是这样的话,出于多种原因是错误的:
login
操作不存在login
操作,而不是针对每个INPUT结果触发答案 2 :(得分:0)
为什么要发送网址。 如果你能进入javascript。 创建
<s:hiddent id="test" name="test"/>
$('#test').value("your value");
String test;
setTest
getTest
String cardNumber = getTest();