如何将选定的值从jsp页面发送到动作类?

时间:2015-04-27 10:55:57

标签: java html struts-1

我在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中的action类?

2 个答案:

答案 0 :(得分:0)

您需要在MyForm文件中声明的格式为struts-config.xml的媒体资源:

<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(); 

答案 1 :(得分:0)

您的选择&#39;缺少一个NAME。如果它有一个名称,它将作为http参数进入服务器(并且服务器不会介意这是来自&#39;选择&#39;还是文本输入...)。

<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>

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

从这一点开始,您可以像使用其他参数一样使用参数。忘掉它来自一个&#39; select&#39;。如果你真的使用旧的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">
...