2013-12-18 34 views
2

我已經從JSP頁面名稱add.jsp創建一個保存數據一樣,顯示這種觀點是這個變化行動屬性

<s:form action="AddDomain"> 
      <s:push value="idp"> 
       <s:textfield name="domainName" label="Domain Name" /> 
       <s:textfield name="url" label="Domain URL" /> 
       <s:textfield name="noOfLicense" label="License Purchased" /> 
       <s:textfield name="licenseExpireDate" label="License Expire Date" title="YYYY-MM-DD like 2013-01-21" /> 
       <s:textfield name="userActiveDuration" label="Active User Duration" 
        title="please mention in days" /> 
       <s:textarea cols="30" rows="5" name="notes" label="Note"></s:textarea> 
       <s:submit value="Add"></s:submit> 
      </s:push> 
     </s:form> 

操作方法

public String addDomainPage() { 

    return ActionSupport.SUCCESS; 
} 

我創建了另一個列出所有域的頁面,並提供編輯鏈接以編輯任何域。使用時點擊編輯URL這個動作被稱爲

public String loadDomain() { 

    HttpServletRequest request = ServletActionContext.getRequest(); 
    String url = request.getParameter("durl"); 
    IDPBroker broker = new IDPBroker(); 
    idp = broker.getDomainByURL(url); 
    return ActionSupport.SUCCESS; 
} 

行動的成功完成之後顯示add.jsp頁面。 Struts在JSP頁面中填充數據。

現在,問題是我想要更改表單標記的動作屬性的值。我也想將value of submit button更改爲'編輯'。我計劃在Action類中創建一些私人的attribute(action,Label),並且當一個addDomainPage操作被調用時,我將改變這些屬性相對於添加頁面的值。類似於loadDomain的操作。現在我不知道如何去做,這意味着如何在視圖中使用這些私有屬性。告訴我,我做得正確,接下來要做什麼?

回答

2

相同的動作類可以用來映射提交按鈕上的不同方法。像

<s:submit value="Add" method="addDomainPage" /> 
<s:submit value="Load" method="loadDomain" /> 

形式action屬性應該映射到動作類execute方法,如果您使用提交這樣的按鈕,這將永遠不會調用。默認啓用的DMI允許調用指定的方法。

如果要動態更改Struts標記中的屬性,可以在JSP中使用OGNL表達式而不是硬編碼值。爲此,您應該在執行結果前定義動態值的動作中定義屬性。例如

public String getAction(){ 
    return "AddDomain"; 
} 

<s:form action="%{action}"> 
+0

感謝@羅曼的工作。我有一個其他問題,我很困惑%{}和$ {}表達式。我只想知道哪一個我用於哪個目的。 –

+0

%{}用於OGNL表達式(並非總是必需的),$ {}用於JSP EL表達式(不用於struts標籤的屬性)。 –

+0

from your answer我明白%{}是在我們需要一個在動作中定義的屬性的值時使用的。我對嗎? –