Java 无法使用<;从struts2中的值堆栈中获取值;s:行动>;
我想要的:我想要从Java 无法使用<;从struts2中的值堆栈中获取值;s:行动>;,java,jsp,struts2,valuestack,Java,Jsp,Struts2,Valuestack,我想要的:我想要从列表集合中检索值 我正在练习/学习struts 2框架。但是,我对OGNL的行为感到困惑。 这些是我的文件: Index.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PU
列表
集合中检索值
我正在练习/学习struts 2框架。但是,我对OGNL的行为感到困惑。
这些是我的文件:
Index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<hr>
<s:action name="one" />
<s:property value="list_fruits[0]" />
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>ONE.JSP</h1>
<br>
<s:property value="list_fruits[0]" />
</body>
</html>
one.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<hr>
<s:action name="one" />
<s:property value="list_fruits[0]" />
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>ONE.JSP</h1>
<br>
<s:property value="list_fruits[0]" />
</body>
</html>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Case2:当我把这个(下面的)代码放到index.jsp
中时,值从one.jsp
打印出来,因为在这个场景中我包含了属性executesult=“true”
<s:action name="one" executeResult="true"/>
<s:property value="list_fruits[0]"/> <!-- still NOT printed here, but gets printed from one.jsp -->
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<hr>
<s:action name="one" />
<s:property value="list_fruits[0]" />
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>ONE.JSP</h1>
<br>
<s:property value="list_fruits[0]" />
</body>
</html>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
在案例2中,由于one.jsp
而不是由于index.jsp
我想知道为什么在案例1中没有打印任何值,而在案例2和案例3中没有这样的问题。为什么会这样?有人能给我指点路吗?亚历山德姆已经回答了你,但是自从你说 还不清楚(请解释 您可以将其用于:
executesult=“true”
获取结果var
属性将其推送到主页面ValueStack上,然后使用#
引用它:
#attr
或#session
检索这些值这就是为什么不应该使用
标记的原因:它破坏了大多数S2框架约定和机制,这是一种不好的做法(或者至少不是一种好的做法).您必须为打印值提供值或列表引用,并且在场景1中,您没有设置action tag的属性以显示执行结果,并且没有按照OGNL正确设置列表引用,因此您没有得到结果。在场景1中,我在
上的值属性中提供了列表引用。仅对于给定的booleanExecuteSult
,因为它不是强制性的。Scene3也是一样的,那么为什么它会在Scene3中打印而不是在scene1中?作用域、作用域和作用域。它不会打印在索引中,因为它不存在。顺便说一句,OGNL根本不相关。你能告诉我作用域是如何工作的吗?我的意思是,为什么在案例2中没有作用域问题,而案例1因“作用域”而受损。作用域在这里是如何工作的。@AleksandrM,我想问两个问题:列表是否在案例1中输入了值堆栈中的值。我是否从案例2中的值堆栈中获取值。我被卡住了,请澄清。
<s:action name="one"/> <!-- removed executeResult="true" -->
<s:property value="#request.req_scope[0]"/>