主要有两种方式:
1 在action中定义跟表单的name字段同名的field,并生成相应的set方法,这样struts就会自动将参数值设好。
2 可以在action中获取原生的>();
即可。
一般在页面取值都是这样做的:
后台在action中requestsetAttribute("key",value);
前台在jsp相应的框 value="<%=requestgetAttribute("key")%>"就能取出来了。
用textarea的话,就<textarea><%=requestgetAttribute("key")%></textarea>
不管存在哪里,后台都要requestsetAttribute("key",value);
前台用requestgetAttribute("key")接收。
这里的key可以随便取名字,前后台一样就可以了,
value是要传的值。
另外可以用EL表单提取:
<table width="600" border="1">
<logic:iterate id="item" name="adminForm" property="rows">
<tr>
<td><html:multibox property="ids" value="${itemid}" ></html:multibox></td>
<td>${itemid}</td>
<td>${itemname}</td>
<td>${itempassword}</td>
</tr>
</logic:iterate>
</table>
根本不用自己手动把页面得到的值手动放到对象里。struts2会自动帮你做的。
你所要做的只是定义一个对象,然后再在Action里,定义一个对象的实例,然后实现get()和set()方法,就可以了,struts2会自动帮你注入。
例如:
User 类的属性(String userName,String password)
Action 类的属性(User user),然后实现get()和set()方法。
然后再页面设置字段的name属性为:useruserName这样的名字:
<s:textfield name="useruserName" label="用户名">
<s:textfield name="userpassword" label="密码">
<s:submit/>
<s:form action="student_action" method="post">这句话里的
action属性的值,要根据Struts2的配置文件strutsxml里的设置来定:
比如strutsxml里是这样的:
<action name="student_action123" value="student_action"/>
那么页面里就应该写(假设是struts缺省包和默认命名空间):
<s:form action="student_action123action" method="post">也就是说,提交表单时的目标是配置文件中action的name属性决定的。
加不加action后缀,可以看strutsxml里的配置常数
<constant name="strutsactionextension" value=",action"/>来定,如这个设置就是加不加后缀都可以(好像是struts2的高版本都默认可以不加后缀)。
在很多Web应用中 为了完成不同的工作 一个HTML form标签中可能有两个或多个submit按钮 如下面的代码所示
<! [if !supportLineBreakNewLine] ><action= …method= post >……<inputtype= submit value= 保存 /><inputtype= submit value= 打印 /></>
由于在<form>中的多个提交按钮都向一个action提交 使用Struts Action的execute方法就无法判断用户点击了哪一个提交按钮 如果大家使用过Struts x就会知道在Struts 之前的版本需要使用一个LookupDispatchAction动作来处理含有多个submit的form 但使用LookupDispatchAction动作需要访问属性文件 还需要映射 比较麻烦 从Struts 开始 加入了一个EventDispatchAction动作 这个类可以通过java反射来调用通过request参数指定的动作(实际上只是判断某个请求参数是不存在 如果存在 就调用在action类中和这个参数同名的方法) 使用EventDispatchAction必须将submit的name属性指定不同的值以区分每个submit 而在Struts 中将更容易实现这个功能
当然 我们也可以模拟EventDispatchAction的方法通过request获得和处理参数信息 但这样比较麻烦 在Struts 中提供了另外一种方法 使得无需要配置可以在同一个action类中执行不同的方法(默认执行的是execute方法) 使用这种方式也需要通过请求参来来指定要执行的动作 请求参数名的格式为
action!method action
注 由于Struts 只需要参数名 因此 参数值是什么都可以
下面我就给出一个实例程序来演示如何处理有多个submit的form
第 步实现主页面(more_submit jsp)
<%@pagelanguage= java import= java util pageEncoding= GBK %><%@taglibprefix= s uri= /struts tags %><> <head><title>MyJSP hello jsp startingpage</title> </head><body><s:formaction= submit action ><s:textfieldname= msg label= 输入内容 /> <s:submitname= save value= 保存 align= left method= save /><s:submitname= print value= 打印 align= left method= print /> </s:form> </body></>
在more_submit jsp中有两个submit 保存和打印 其中分别通过method属性指定了要调用的方法 save和print 因此 在Action类中必须要有save和print方法
第 步实现Action类(MoreSubmitAction)
packageaction;
importjavax servlet ; import opensymphony xwork ActionSupport; import apache struts interceptor ; publicclassMoreSubmitActionextendsActionSupportimplementsServletRequestAware { privateStringmsg; privatejavax servlet >
以上就是关于struts2如何获取请求参数全部的内容,包括:struts2如何获取请求参数、Struts2怎样将数据自动填充到Form里、Extjs struts2 form表单提交自动注入form属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)