2015-04-03 78 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