2013-12-17 20 views
1

例外:從普通的HTML表單調用Struts2的命名空間

描述:所請求的資源/Strut2Examples/checkMethods/updateCRUD不可用。如何調用命名空間基於的動作正常用於Struts2的HTML。它適用於Struts2 Forms。請幫我理解。

HTML:

<s:form namespace="/checkMethods" action="executeCRUD" >    
     <s:submit label="execute" value="execute" /> 
    </s:form> 

    <form name="normalForm" id="normalForm"> 
    <input type="button" value="update" onclick="submitForm()"/> 
    </form> 

Java腳本:

<script type="text/javascript"> 
    function submitForm() 
    { 
     var myForm = document.getElementById("normalForm"); 
     myForm.action="checkMethods/updateCRUD"; 
     myForm.submit(); 
    } 
    </script> 

回答

2

如果你想使用HTML表單標籤,你應該使用url的動作名稱和命名空間屬性建立網址標籤。例如

<form action="<s:url namespace="/checkMethods" action="deleteCRUD"/>" method="POST"> 

同樣的問題可以在JavaScript代碼中混合使用url標記。像這樣

myForm.action='<s:url namespace="/checkMethods" action="deleteCRUD"/>'; 

實際上,如果你定義窗體的action屬性,你不需要在事件處理函數中構造URL。只要做submit()

您應該認真對待url標記,因爲例如您在action屬性中構建了缺少上下文路徑和斜槓的URL,並且您無法計算錯誤。

+0

感謝您的回覆,如何使用不帶sturts2標籤的Struts2名稱空間,如 sunleo

+0

你可以從'ServletActionContext.getActionMapping()。getNamespace()' –

+0

得到一個命名空間所以你說我不能在沒有struts2標籤的情況下實現這個!因爲使用ServletActionContext.getActionMapping()。getNamespace()可以獲取但不能在窗體中設置。 – sunleo