如何在动作类和jsp页面之间传递对象数据?

时间:2011-03-21 07:09:57

标签: java jsp struts2

我有一个名为Code的Java类。它具有与codeIdcodeDescription等代码相关的所有值及其getter和setter。我正在一个动作类中成功检索代码的数据(我正在使用struts 2)。

现在我想在display.jsp页面中获取这些值。显然,我希望显示来自codeobj.codeIdcodeobj.codeDescription等对象的数据。我怎么能这样做?

3 个答案:

答案 0 :(得分:8)

您需要拥有的是Action类中字段的getter和setter方法。 Struts2会将该对象放在ValueStack的顶部,并且在OGNL的帮助下,您可以从JSP访问属性。

以下是代码段

public class Test Extends ActionSupport{
    public String execute() throws Exception{
     // Action Logic fetching/Init code object
     return SUCCESS;

}

private Code code=null;

public void setCode(Code code){
    this.code=code
}

public Code getCode(){
    return code;
}

}

现在,Struts2框架将code实例放在ValueStack的顶部,这是框架放置所有请求处理数据并由jsp / Actions使用OGNL引用的地方。是一种获取数据的导航语言。

在JSP中,您可以使用以下代码访问code实例

<s:property value="%{code.codeId}"/>
or
<s:textfield name="abc" value="%{code.codeId}"/>

这里究竟发生了什么,框架已将code实例的填充值放在ValueStack上,并且在OGNL的帮助下,我们将获取该值。

OGNL将检查值框架顶部是否有一个实例namd code,它将由框架放置,在找到code实例后,它将检查它是否具有codeId属性。在找到属性时,OGNL将执行数据类型转换,并将在JSP中显示该值。

希望这会对你有所帮助。

答案 1 :(得分:0)

试试这个

<s:iterate value="codeobj" var="obj"

<s:property value="codeId"/>
<s:property value="codeDescription"/>

</s:iterate>

答案 2 :(得分:0)

要将数据从操作传递到jsp: 考虑您要将消息从操作传递到jsp。首先,在操作类中将消息声明为String变量。在Execute方法中,添加消息的值,如下例所示:

public class TestAction {

String message;
public String execute () {


    System.out.println("Execute method called ");
    message = "SUCCESS Message Ya Maged";


    return "success";
}


public String getMessage() {
    return message;
}
public void setMessage(String message) {
    this.message = message;
}

}

JSP文件中的

: 使用和值参数获取您在操作类中声明的String消息变量的值。

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<h1><s:property value="message"/></h1>

</body>
</html>