带参数的Struts2操作无效

时间:2016-07-30 05:52:32

标签: java jquery jsp http struts2

我使用参数从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>   

3 个答案:

答案 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)

  1. 发送带有POST的表单时,表单中的数据已经序列化,不需要像GET一样将值编码为QueryString参数;

  2. 始终使用 getters setters 的私有属性来接收/公开数据,您几乎不需要从请求中读取内容;

  3. 您可能已将全局INPUT结果映射到login操作,并且正在触发该结果。如果是这样的话,出于多种原因是错误的:

    • login操作不存在
    • 仅针对凭据问题触发login操作,而不是针对每个INPUT结果触发
    • 如果触发INPUT结果,则表示您向页面发送了错误的内容,因此需要仔细检查参数。 Read more on the INPUT result

答案 2 :(得分:0)

为什么要发送网址。 如果你能进入javascript。 创建

<s:hiddent id="test" name="test"/>

$('#test').value("your value");

String test;

setTest
getTest

String cardNumber = getTest();