繁体   English   中英

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

[英]How to pass object data between action class and jsp page?

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

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

您需要拥有的是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的顶部, ValueStack是框架放置所有请求处理数据的地方,并由jsp / Actions使用OGNL引用,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中显示该值。

希望这会帮助你。

尝试这个

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

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

</s:iterate>

将数据从操作传递到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文件中:使用和value参数获取您在操作类中声明的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM