1
一个Action类你能解释一下Struts2 web应用程序会发生什么吗?
public class IndexAction extends ActionSupport implements SessionAware {
private int submitPage;
//getter-setter
的方法
public String execute() {
// this means that session is NEW
if(!session.containsKey("progres")) {
System.out.println("NEW session");
System.out.println("level " + 1);
session.put("level", 1);
return SUCCESS;
}
jsp页面
<% Integer level = (Integer)session.getAttribute("level"); %>
<c:set var="level" scope="request" value='<%=session.getAttribute("level")%>' />
<!--<c:out value="Level: ${level}"/>-->
<h2>Task <c:out value="${level}"/></h2>
<s:form action="index">
<s:hidden name="submitPage" value="%{level}" />
...
当我第一次访问这个网页它呈现给这个
<!--Level: 1-->
<h2>Task 1.</h2>
<form id="index" name="index" action="/Struts2HiberQuize_2/index.action" method="post">
<table class="wwFormTable">
<input type="hidden" name="submitPage" value="0" id="index_submitPage"/>
...
为什么隐藏的fild包含值=“0”,它必须是值=“1”?如果第一次接受页面,会发生这种情况。下一次隐藏的值应该与var =“level”相对应。
不完全确定,但也不知道为什么你不只是'submitPage'设置为你想要的值。 – 2014-08-28 18:54:44
因为如果我理解正确的话,我必须仅通过表单提交将价值发送到操作类。 – andy007 2014-08-28 19:02:56
你不明白;如果您通过一个动作(您应该)将动作属性作为表单值使用,那么这就是Struts 2视图层背后的概念。 – 2014-08-28 19:09:27