struts2 action怎么从页面取值传值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2 action怎么从页面取值传值相关的知识,希望对你有一定的参考价值。

public String selAll()
List li=this.pagbiz.selAll();//这里获得了一个List对象的值,我怎样传到jsp页面上?
return SUCCESS;

还有一个问题。JSP页面访问时候 *.action怎样决定执行那个方法。struts1中是用?传参执行某个方法

  一般是在Action中定义一个成员变量,然后对这个成员变量提供get/set方法,在JSP页面就可以取到这个变量的值了。
  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);

本回答被提问者采纳
参考技术B 第一个问题.你继承了相应的类,好像叫什么support把,很久没用了抱歉.还想还有个什么类要继承的,我搞不清楚了.然后,你在类里面调用set方法赋值给你的集合,页面就可以取到了.
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 的action 怎么向页面传值?

struts2中的sessionrequest 和action往页面中传值的方法

怎么把action中的值传到jsp页面

关于STRUTS2的传值问题?

关于Struts2中Action从表单取值并且存到Web元素中(session)

struts2怎么向jsp传递参数