2013-10-08 30 views
0

早上好, 我在嘗試將表單從JSP傳遞給Action。 如果我傳遞URL中的參數(?par = value ...),表單將正確編譯,但如果我使用提交和表單值,則表單不會正確編譯。Struts表單爲空

我認爲一切都設置正確,但我必須錯過一些東西。

我已經搜索了其他類似的帖子,但我找不到解決方案。

問題是,到達Action「new」方法的表單是空的。

struts.config.xml:

<form-bean name="EsempioForm" type="com.forms.EsempioForm"/> 
<action name="EsempioForm" parameter="method" input="/pages/esempio.jsp" path="/esempio" scope="request" type="com.EsempioAction"> 
<forward ... /> 
</action> 

esempio.jsp:

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> 
... 
<html:form action="/esempio"> 
<input type="hidden" id="method" name="method" value="new"/> 
<html:text property="desc" disabled="true" /> 
<html:submit styleClass="button">record</html:submit> 
</html:form> 

EsempioAction.java

public ActionForward new(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
    ... 
    EsempioForm esempioForm = (esempioForm) form; 
    ... 
    return mapping.findForward(...); 
} 

任何人都可以幫我嗎? 非常感謝您的任何建議。

+0

共享編譯錯誤。 – gyan

+0

沒有編譯錯誤。簡單的形式是空的,而它應該被重視。 – Enrico

回答

2

改爲使用<html:hidden property="method" value="new" />

編輯:

disabled="true"禁用字段未張貼在形式提交。如果您想提交,請將其設爲只讀。

+0

感謝您的支持。但隱藏的參數正確傳遞,實際上是執行「新」方法。問題是關於其他patamethers,在示例中,屬性「desc」傳遞爲空,而在jsp頁面中它具有正確的值。 – Enrico

+0

在答案中查看我的編輯。 –

+0

謝謝,這是正確的。禁用propery造成了這個問題,我無法找到它,因爲我的JavaScript的另一個錯誤。非常感謝你。 – Enrico

1

<html:form action="/esempio">更改爲<html:form action="/esempio" method="POST">並重試。

編輯1:屬性desc沒有被傳遞?

是否與disabled =「true」(只是懷疑)屬性有什麼關係?

+0

GET或POST如何產生影響? –

+0

GET從URl獲取數據,而POST從正文發佈數據。它使數據在HTTP請求中發送到服務器的方式有所不同。閱讀更多http://www.w3schools.com/tags/ref_httpmethods.asp – gyan

+0

是的,但是什麼使得隱藏參數不被傳遞給GET並且將被傳遞給POST。我的意思是你回答解決問題?如果是這樣如何? –

0

您嘗試通過您的html表單的屬性應該出現在您的表單bean類中。除非您使用<input type="hidden" id="method" name="method" value="new"/>傳遞任何隱藏值,否則任何屬性都應該始終映射到表單中的變量。在這種情況下,您不需要在表單中進行相應的映射!

+0

我想通過的屬性存在於表單bean類中 – Enrico