2012-09-17 49 views
0

我正在用struts2 + jquery插件編寫一個web應用程序。
我使用AJAX表單提交與sj:從jquery插件提交標記。 我在使用sj:submit中的「validate = true」標籤驗證表單(AJAX)時遇到了一個問題。 以下是SJ:提交標籤:AJAX驗證不與struts2工作jquery插件

<sj:submit value="ADDUSERNOW" onBeforeTopics="before" onSuccessTopics="success" 
    onErrorTopics="errorState" onCompleteTopics="complete" targets="userMgmntDiv" validate="true"/> 

我的HTML頭部分還包含了如下的驗證需要兩個js文件的引用。低於該

<script language="JavaScript" src="${pageContext.request.contextPath}/struts/utils.js" type="text/javascript"></script> 
     <script language="JavaScript" src="${pageContext.request.contextPath}/struts/xhtml/validation.js" type="text/javascript"></script> 

驗證XML給出命名爲ActionClass-validation.xml中並且被放置在相同的封裝中,關於被調用的驗證一個類:

 <validators> 
      <field name="userModel.userName"> 
       <field-validator type="requiredstring"> 
        <message>UserName Is Required</message> 
       </field-validator> 
      </field> 
     </validators> 

形式之後被提交,不會觸發驗證,並且繼續執行並調用struts2操作類。
有什麼我在這裏失蹤?我已經搜索了很多,但找不到任何答案,請您及時幫助
Struts2的核心版本:2.3.4 Struts2的,jQuery的插件:3.3.3 動作配置如下魔神以下:

<action class="addUserAction" method="addUser"> 
    <interceptor-ref name="jsonValidationWorkflowStack"/> 
    <result>addUser.jsp</result> 
</action> 

在除了上面提到的,我使用spring + struts2 + hibernate來實現上述任務。當我嘗試struts2-jason wiki頁面中顯示的示例時,我得到的錯誤是:無法找到名爲AddUserAction的類的動作(這是一個bean在spring-beans.xml中) 當調用validator inteceptor時,似乎會引發錯誤。 當我註釋掉用於動作類驗證的註釋 - AddUserAction時,此錯誤消失並且頁面加載成功。 以下是我的問題: 1)我怎樣才能使用spring與struts2 convention插件?這是因爲,約定插件使用自己的機制來映射URL和動作(使用註釋或默認行爲)。 2)以前,我期待struts.xml文件可以用於url到動作映射,並且可以使用註釋進行驗證。 (使用約定插件)但是這種方法似乎不起作用(約定插件+ struts.xml不起作用)

+0

您在JavaScript控制檯中有任何錯誤嗎?你的動作配置如何?你有沒有添加jsonValidationWorkflowStack攔截器?您是否看到有螢火蟲或類似工具的XHR請求? – Johannes

+0

@jogep,我在java腳本控制檯中沒有收到任何錯誤。 動作配置包括jsonValidationWorkflowStack攔截器。當ajax請求被髮送到服務器時,XHR請求被髮送到服務器(由httpfox和firebug捕獲)。 操作配置發佈在問題中。此外,wiki頁面(以及strutrs2-showcase.war)中顯示的示例顯示了需要使用struts2-convention插件的註釋。 我是否需要僅使用約定插件(更具體地說是註釋)?我使用聲明性驗證而不是註釋。 – Atul

回答

1

struts2 ajax validation是客戶端驗證,由dojo本地提供,這裏是文檔Struts2 Ajax validationstruts2-jquery plugin使用jsonValidationWorkflowStack提供此功能,可以這樣使用它:Example

+0

當然,Struts2 jQuery插件提供了一個客戶端驗證功能。請參閱http://code.google。com/p/struts2-jquery/wiki /驗證以獲取詳細信息,或查看展示示例。 – Johannes

+1

@jogep對不起,我會糾正它 – Jaiwo99

-1

我試過了。它工作得很好。但是如果你的表單有一個用於上傳的輸入文件,那麼ajax驗證不起作用。