Struts2:如何将值从一个动作传递到另一个动作。或者从一个JSP到另一个JSP。不使用会话
嗨,我正在使用Struts2构建一个项目。然而,在发展过程中,我面临着许多问题。Struts2中最大的问题是会话管理。与此相关的信息非常有限 我一直在寻找解决问题的方法,但得到的信息有限,不能满足我的需要 我不希望使用容器的会话(ApacheTomcat7),因为当多个用户尝试使用该应用程序时,它将成为开销 我创建了2个动作类和2个JSP。 在JSP1(Login.jsp和LoginAction.java POJO)中输入的值应该在另一个操作(HomeAction.java POJO)中使用,之后它们应该显示在后续jsp(Home.jsp)中 我也在用瓷砖 我已尝试使用标记,但无法为其设置值 在Struts2中, 如何将JSP1/Action上的对象传递给另一个Action/JSP2 一个小的登录页面的例子将不胜感激。 e、 g.在文本字段中输入的用户名应使用两个不同的操作类显示到另一个JSP页面 struts.xmlStruts2:如何将值从一个动作传递到另一个动作。或者从一个JSP到另一个JSP。不使用会话,struts2,Struts2,嗨,我正在使用Struts2构建一个项目。然而,在发展过程中,我面临着许多问题。Struts2中最大的问题是会话管理。与此相关的信息非常有限 我一直在寻找解决问题的方法,但得到的信息有限,不能满足我的需要 我不希望使用容器的会话(ApacheTomcat7),因为当多个用户尝试使用该应用程序时,它将成为开销 我创建了2个动作类和2个JSP。 在JSP1(Login.jsp和LoginAction.java POJO)中输入的值应该在另一个操作(HomeAction.java POJO)中使用,之
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="login" class="org.myaction.LoginAction" method="validateLoginCredentials">
<result name="autheticatedUser" type="redirect" >homePage</result>
<result name="fail" >/jsp/Login.jsp</result>
</action>
<action name="homePage" class="org.myaction.HomeAction" method="execute">
<result name="responseOK" type="tiles" >/tile.NextPage</result>
<result name="error" type="tiles" >/tile.HomePage</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Login</display-name>
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>/jsp/Login.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="login" class="org.myaction.LoginAction" method="validateLoginCredentials">
<result name="autheticatedUser" type="redirect" >homePage</result>
<result name="fail" >/jsp/Login.jsp</result>
</action>
<action name="homePage" class="org.myaction.HomeAction" method="execute">
<result name="responseOK" type="tiles" >/tile.NextPage</result>
<result name="error" type="tiles" >/tile.HomePage</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>Login</display-name>
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>/jsp/Login.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
UserData.java
public class UserData {
private String userName;
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
}
如何设置中的UserData对象的userName属性
LoginAction.java
我试过这个
<s:hidden name="userData.userName" value="userName" />
但它不起作用
你知道我在这里犯了什么错误吗?将
重定向操作
与参数
<action name="login" class="org.myaction.LoginAction" method="validateLoginCredentials">
<result name="autheticatedUser" type="redirectAction">
<param name="actionName">homePage</param>
<param name="userName">${userName}</param>
</result>
<result name="fail" >/jsp/Login.jsp</result>
</action>
主页
${userName}
/jsp/Login.jsp
另外,不要忘记在
HomeAction
类中添加用户名getter/setter。然后在您的Home.jsp
中,您可以直接使用
(或任何东西)会话插件是会话的良好包装器,它可以用来管理操作之间的对象生命周期。()
当您有一些基于步骤的jsp页面(多于两个步骤)时,此解决方案将非常有用。中的插件是注释库,也有必要的jsp标记Hi Anu,感谢您的帮助。不过,我刚刚编辑了上面的问题。它不允许我添加到这个评论框中。很抱歉不知道如何回答。在做了这些更改之后,我收到了一个空的异常分解您的问题。首先尝试使用
stringusername
,就像您最初在LoginAction类中给出的那样。在HomeAction
类中声明相同的变量及其getter/setter。然后尝试在Home.jsp
中查看该值。我不明白你编辑的帖子。您是否试图将用户名
从登录页面提交到用户数据
?您不需要声明一个userData
构造函数来设置userName
属性吗?您好,我已经尝试过了,并给出了两个不同的结果。”主页${userName}此处的userName已替换为UserData对象。并获得异常HomeAction.setUserData(字符串)。。。NoSuchMethodException这是否意味着我们不能传递字符串以外的参数???我从未尝试过对象,但我认为它应该可以工作。当您传递用户名时,它是否工作?您在redirectAction
中传递userName
,因此struts将在HomeAction
中查找setUserName(String userName)
。同样,如果您在结果中传递userData,它将查找setUserData(userData data)方法。你确定你有正确的getter/setter吗?我不理解你使用会话的具体问题——这正是它存储会话特定数据的目的。您是否证明您拥有“太多”的会话数据?当不再需要会话数据时,是否忽略了删除会话数据?