2015-04-03 79 views
0

我有与Struts2的一个小问题,我不知道为什么它不工作访问...Struts2的 - 从JSP到操作变量

我想通过两个JSP之间的2个变量,通过Action类:

view1.jsp:

<s:form action="myAction"> 
    <input id="var1" name="var1" type="text" /> 
    <input id="var2" name="var2" type="text" /> 
    <button type="submit"> Ok </button> 
</s:form> 

- > VAR1和VAR2是我想传递给Action类的变量

struts.xml中:

<action name="myAction" class="MyAction" method="execute"> 
    <result name="success">view2.jsp</result> 
</action> 

Action.java:

public class MyAction extends DefaultActionSupport 
{ 
    private String var1; 
    private String var2; 

public String execute() throws Exception 
{ 
    // ... Some actions ... 
    return SUCCESS; 
} 

// Getters & Setters for var1 and var2 (generated by Eclipse) 
public String getVar1() 
{ 
    return var1; 
} 

public void setVar1(String var1) 
{ 
    this.var1 = var1; 
} 

public String getVar2() 
{ 
    return var2; 
} 

public void setVar2(String var2) 
{ 
    this.var2 = var2; 
} 

- >这正常工作;如果我把 “是System.out.print” 与干将,它表明我VAR1(内容1)和VAR2(内容2)的良好价值观

view2.jsp:

Values of var1 = <s:property value="var1" /> 
Values of var2 = <s:property value="var2" /> 

Textfield with var1 in default-value : <s:textfield value="%{var1}" /> 
Textfield with var2 in default-value : <s:textfield value="%{var2}" /> 

- >这里有个问题: 我无法获取var1和var2的内容!
- ><s:property value="var1" /><s:textfield value="%{var1}正在返回“空”

我的错误在哪里?我不明白...我跟着别人在互联网上说的...

谢谢!

+0

你能不能给我们你的getter和setter,因为他们有关系吗? – yunandtidus 2015-04-03 09:56:23

+0

嗨!感谢您的评论 我编辑了我的消息,其中包含Getters和Setters的内容 – iammg 2015-04-03 10:09:56

+0

您是否已将view2.jsp的代码放在窗体标记中。像 ... – Anshuman 2015-04-04 18:39:27

回答

0

我终于找到了我的问题的答案!
要获得var1var2的价值,我不得不使用那些下面几行:

view1.jsp:

<s:form action="myAction"> 
    <input id="var1" name="var1" type="text" /> 
    <input id="var2" name="var2" type="text" /> 
    <button type="submit"> Ok </button> 
</s:form> 

struts.xml中:

<action name="myAction" class="MyAction" method="execute"> 
    <result name="success">view2.jsp</result> 
</action> 

行动.java:

public class MyAction extends DefaultActionSupport{ 
    private String var1; 
    private String var2; 

    public String execute() throws Exception{ 
     // ... Some actions ... 

     ActionContext.getContext().getSession().put("var1", getVar1()); 
     ActionContext.getContext().getSession().put("var2", getVar2()); 

     return SUCCESS; 
    } 

    // Getters & Setters for var1 and var2 (generated by Eclipse) 
    public String getVar1(){ 
     return var1; 
    } 

    public void setVar1(String var1){ 
     this.var1 = var1; 
    } 

    public String getVar2(){ 
     return var2; 
    } 

    public void setVar2(String var2){ 
     this.var2 = var2; 
    } 
} 

view2.jsp:

Values of var1 = <s:property value="#session.var1" /> 
Values of var2 = <s:property value="#session.var2" /> 

//To transform var1 and var2 into JSP variables : 

<s:set var="var1 " value="#session.var1 " /> 
<s:set var="var2 " value="#session.var2" /> 
<jsp:useBean id="var1 " type="java.lang.String" /> 
<jsp:useBean id="var2 " type="java.lang.String" /> 

<% 
    String myString1 = var1; 
    String myString2 = var2 
%> 
+0

绝对不是解决方案。 – 2015-04-16 13:36:52

+0

@AndreaLigios我该如何做得更好? – iammg 2015-04-17 08:16:24

+0

使用getter和setter来代替使用会话,在这里没用。当使用会话时,顺便说一句,使用SessionAware(例如在你的DefaultActionSupport中),这是首选从ActionContext获取它。阅读更多:http://stackoverflow.com/a/19540712/1654265 – 2015-04-17 08:18:15