当以个action里面有多个方法时,如果我在配置时,在struts.xml中为每个方法配置一个action
这样在客户端验证是没有问题。
但是这样为这个方法都要配置一下太麻烦了,struts2提供了动态调用方法:
如:
<action name="people" class="" />
<s:form action="people!save" namespace="/test" validate="true">
如果这样配置的话,客户端的验证JS就没有生成。如果如下配置:
<action name="people" class="" method=“save”/>
<s:form action="people" namespace="/test" validate="true">
这样就没有问题。
那struts2提供了动态调用方法还有什么意义呢?

解决方案 »

  1.   

    <action name="listAction!*" method="{1}" class="你的包名.SongListAction ">
      <result name="success">index.jsp </result>
    </action>
    用这种方式实现
      

  2.   

    谢谢 tzb08
    但是这样做又有个新问题
    如:通过一个add的连接进入到下面的页面,页面中的form如下定义:
    <s:form action="listAction!save" >
    这样生成的源码发现成了:
    <form action="/listAction!save!save.action" >
    重复了save了???还有个验证的问题请教
    <field name="salary">
    <field-validator type="double">
    <param name="minInclusiveValue">10.1</param>
    <param name="maxInclusiveValue">20.1</param>
    <message>数字范围不正确</message>
    </field-validator>
    </field>
    double的数字大小范围怎么限制没有?
      

  3.   

    <action name="people!*" class="com.test.action.PeopleAction" method="{1}">
        <result>/index.jsp</result>
        <result name="input">/addPeople.jsp</result>
        <result name="add">/addPeople.jsp</result>
    </action>jsp
    <s:form action="people!save" namespace="/test" validate="true">
    <s:textfield label="薪水" name="salary" />
    <s:submit />
    </s:form>生成静态文件
    <form id="people_save" name="people!save" onsubmit="return validateForm_people_save();" action="/struts2/test/people!save!save.action" method="post">看action的值。但这样程序是没有问题的,目前运行来看,一切正常。
    但这样看着也别扭,也不是知道有没有隐藏什么错误。
      

  4.   

     
    <action name="people!*" class="com.test.action.PeopleAction" method="{1}">
        <result>/index.jsp </result>
        <result name="input">/addPeople.jsp </result>
        <result name="add">/addPeople.jsp </result>
    </action>
    这里面我怎么没看到save这单词呢
      

  5.   

    save 是PeopleAction的一个方法名呀。在JSP的form中配置了的呀,在执行的时间就替换了method={1}
      

  6.   


    第二个问题<field name="salary">
      <field-validator type="double">
         <param name="minInclusiveValue">10.1 </param>
         <param name="maxInclusiveValue">20.1 </param>
         <message>salary needs to be between ${minInclusiveValue} and ${maxInclusiveValue}</message>
      </field-validator>
    </field> 第一个问题的话,我没遇到过,把用到的代码和配置文件贴出来贴全点
      

  7.   

    代码只有下面validation了,其余的都贴出来了
    <field name="salary">
    <field-validator type="double">
    <param name="minInclusiveValue">10.1 </param>
    <param name="maxInclusiveValue">20.1 </param>
    <message>salary ${minInclusiveValue} between ${maxInclusiveValue}</message>
    </field-validator>

    </field>
    2个问题都不行
      

  8.   

    谢谢了,我这上不了qq,估计应该是double的问题,我换了int就没问题了。