2012-11-14 43 views
3

我正在Struts2中做一個項目,我需要在URL中設置一個參數,如下面的鏈接中的用戶參數。如何在URL中傳遞一個表單在Struts2中提交表單

我希望通過單擊表單提交按鈕而不是單獨鏈接來傳遞此參數。我知道如何與<s:url>做到這一點,但這種方式我需要創建一個鏈接,而不是表單提交。

有人可以幫我一個代碼示例如何做到這一點? 我知道有一種方法可以用HTML或Struts1來實現,但如何用Struts2來實現呢?如果在struts.xml有辦法做到這一點,請舉例說明。

<form action="/example/xyz.action?user=george" method="POST"> 
+2

爲什麼你不把你的價值存儲在隱藏的領域?當您提交表格時,它會自動提交。 –

+0

有很多方法。就像Shashank說的那樣隱藏的領域,它是最好的。 –

+0

您是否希望每次都傳遞此參數?或者你爲什麼想在'struts.xml'中做到這一點? –

回答

8

試試這個:

<s:form action="xyz.action" method="GET"> 
    <s:hidden name="user" value="george"/> 
    // other fields 
</s:form> 

method="GET"會顯示你的參數的URL,<s:hidden name="user" value="george"/>將你的參數。

這裏也是一個例子Example

+0

這是儘可能接近正確的解決方案。請參閱:http://stackoverflow.com/questions/1116019/submitting-a-get-form-with-query-string-params-and-hidden-params-disappear。 ** TLTR **:通過html標準,在form標籤的action屬性中不應該有查詢參數。 – uthomas

+0

**這是不正確的解決方案,因爲它缺少URL中的參數。** –

4

如果使用<s:url<s:form標籤這是可能的。

<%@ taglib prefix="s" uri="/struts-tags" %> 

<s:url id="xyzUrl" action="xyz" includeContext="false"><s:param name="user" value="george"/></s:url> 
<s:form name="xyzForm" action="%{xyzUrl}" method="POST">