Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用<;从struts2中的值堆栈中获取值;s:行动>;_Java_Jsp_Struts2_Valuestack - Fatal编程技术网

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中,我在
    上的
    属性中提供了列表引用。仅对于给定的boolean
    ExecuteSult
    ,因为它不是强制性的。Scene3也是一样的,那么为什么它会在Scene3中打印而不是在scene1中?作用域、作用域和作用域。它不会打印在索引中,因为它不存在。顺便说一句,OGNL根本不相关。你能告诉我作用域是如何工作的吗?我的意思是,为什么在案例2中没有作用域问题,而案例1因“作用域”而受损。作用域在这里是如何工作的。@AleksandrM,我想问两个问题:列表是否在案例1中输入了
    值堆栈中的值。我是否从案例2中的值堆栈中获取值。我被卡住了,请澄清。
    
    <s:action name="one"/> <!-- removed executeResult="true" -->
    <s:property value="#request.req_scope[0]"/>