如何将所选值从 jsp 页面发送到操作 class?

How to send selected value from jsp page to action class?

我在 jsp 页面中有此代码:

<select id="DateReport" style="width: 150px;">
        <option value="1"> 1 </option>
        <option value="2"> 2 </option>
        <option value="3"> 3 </option>
</select>

如何在 Struts 1.2 中将所选值发送到操作 class?

您需要在 struts-config.xml 文件中声明的 MyForm 表单中 属性:

<form-bean name="myForm" type="foo.MyForm" />
[...]

并将其与你的行动联系起来

<action path="/myAction" name="myForm" type="foo.MyAction" scope="request">

在您的表单中:

public class MyForm extends ActionForm { 
    private String myValue; 
    [....] 

    // Getters and setters for all attributes 
}

然后在你的JSP中:

<html:form action="/myAction.do" method="post" >
    [...]

    <html:select styleId="DateReport" property='myValue' style="width: 150px;">
        <html:option value="1"> 1 </html:option>
        <html:option value="2"> 2 </html:option>
        <html:option value="3"> 3 </html:option>
    </html:select>

    [...]
</html:form>

在您的操作 execute() 中,您可以获得值:

MyForm myForm = (MyForm) form; 
String value = myForm.getMyValue(); 

您的 'select' 缺少名称。如果它有名称,它将作为 http 参数发送到服务器(服务器不介意这是来自 'select' 还是文本输入...)。

<form action="YOUR_ACTION" method='post'>
    <select name="dateReport" id="DateReport" style="width: 150px;">
    <option value="1"> 1 </option>
    <option value="2"> 2 </option>
    <option value="3"> 3 </option>
    </select>       

    <input type="submit"/>
</form>

您甚至可以将表单方法更改为'post'并按提交,只是为了亲眼看到参数,例如http://YOUR_ACTION?dateREport=1

从现在开始,您可以像使用任何其他参数一样使用该参数。忘了它来自 'select'。如果您真的使用旧的 struts 1.x 那么您需要 FormBean,如下所述:http://userpages.umbc.edu/~tarr/jst/lectures/S03-Struts-Beans.pdf

简而言之,您需要一个描述表单参数的 bean,例如

class MyForm extends ActionForm{
  private int dataReport;
  // .. constructor, getDataReport(), setDataReport() ...
}

然后在struts中注册 1 xml:

<struts-config>
 <form-beans>
   <form-bean name="myForm" type="mypackage.MyForm"/>
 </form-beans>
 <action-mappings>
 ...
 <action path=".." type="mypackage.MyAction" name="myForm" scope="request">
...