struts2 action怎么从页面取值传值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2 action怎么从页面取值传值相关的知识,希望对你有一定的参考价值。
public String selAll()
List li=this.pagbiz.selAll();//这里获得了一个List对象的值,我怎样传到jsp页面上?
return SUCCESS;
还有一个问题。JSP页面访问时候 *.action怎样决定执行那个方法。struts1中是用?传参执行某个方法
1)在Action中定义成员变量
//定义一个成员变量
private String message;
//提供get/set方法
public String getMessage()
return message;
public void setMessage(String message)
this.message = message;
2)在JSP页面中取值
$message
或者
<s:property value="message"/> 参考技术A 第一个问题:
struts2的action实现RequestAware接口
然后request.setAttribute(“xx”,li);
页面上可以用el表达式去取li 如:$li默认范围requestScope
第二个问题:
指定具体执行哪个方法可以在配置action文件里面写method="方法名"追问
RequestAware接口没法写request.setAttribute(“xx”,li);这个啊。。。。到底方法里面是怎么写的??
追答写错了 应该是request.put("xx",li);
追问.....这个也没有啊,你写个程序你把ACTION其中一个方法发来我看看。。。。根本就没有request这个对象。。难道你让我新建一个httpservletrequest??? Request大写的这个没有Put方法
追答private Map request;
@Override
public void setRequest(Map request)
this.request = request;
实现接口后写入医生给你代码就行了
然后再request.put("xx",li);
2就是把form和action合并了.
关于你的第二个问题,你的参数就是方法名称,他就自己执行那个方法了 参考技术C 在jsp页面:<form name="aa" method="get" action="<%=path%>aAction.do?method=query">
List lis=(List)request.getAttribute("list");
就可以获取action中设置的list
method就是定义执行的方法
在aAction中: public ActionForward query(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse response)
throws Exception
List list=this.pagbiz.selAll();//
req.setAttribute("list", list);
追问
你写的这个是struts1的方法。。。。2里面只返回一个字符串。。
参考技术D 用驱动模型。在action类里面定义:
List li; 然后写set和get方法;
在jsp页面就可以用jstl遍历。追问
能不能写一下,action中的代码。。。是什么样的。然后页面的代码是什么样的就是取个list
struts2中jsp页面与action之间的传值
一、从jsp页面中取值
a) 设计JavaBean
Java类
public class Student { String name; String sex; Long id; int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } }
b) 编写action类,定义变量且提供getter和setter方法,传递过来的参数会封装在stu中,用getter方法取值就可以
StudentAction类
public class StudentAction {
//获取jsp中的学生信息
Student stu ;
public void setStu(Student stu) {this.stu = stu;}
public Student getStu() {return stu;}
public String execute() throws Exception {
System.out.println("已提交学生是:"+stu1.name+" "+stu1.age+"岁 "+stu1.sex+" "+stu1.id+" "
+address1.province+address1.city);
return "loginresult";
};
}
c) 设计表单,在jsp页面中直接用 <对象名.属性名>获取.(emmm。。其中过程我也有点懵,只知道可以这样写,怕忘了所以先记着)
student.jsp
<form action="StudentAction">
学生姓名:<input type="text" name="stu.name"/></br></br>
学生年龄:<input type="text" name="stu.age"/></br></br>
学生编号:<input type="text" name="stu.id"/></br></br>
学生性别:<input type="text" name="stu.sex"/></br></br>
学生籍贯:<input type="text" name="address.province"/></br></br>
学生地址 :<input type="text" name="address.city"/></br></br>
<input type="submit" value="提交">
</form>
d) 配置好web.xml和struts.xml文件
struts.xml
<struts> <constant name="struts.devMode" value="true"/> <package name="gsonTest" extends="struts-default"> <action name="StudentAction" class="gsonTest.StudentAction"> <result name="loginresult">success.jsp</result> <result name="input">/error.jsp</result> </action> </package> </struts>
package:name=“包名”
action : name = "jsp页面中的action名称" ,class = "包名.action类名"
d) 输出结果
二、action传值到jsp页面
1) 在action类中一定义一个成员变量,然后对这个成员变量提供get/set方法
StudentAction类
Student stu ; public void setStu(Student stu) {this.stu = stu;} public Student getStu() {return stu;}
2) 导入struts标签库,用<s>标签获取值,或者用el表达式 ${stu.getName()}
success.jsp
${stu.getName()}; 学生姓名:<s:property value="stu.getName()"/></br></br> 学生编号:<s:property value="stu.getId()"/></br></br> 学生性别:<s:property value="stu.getSex()"/></br></br> 学生年龄:<s:property value="stu.getAge()"/>
3) 效果
以上是关于struts2 action怎么从页面取值传值的主要内容,如果未能解决你的问题,请参考以下文章
struts2中的sessionrequest 和action往页面中传值的方法