2009-06-02 64 views
6

我想在Struts中創建一個登錄頁面。這個想法是驗證用戶是否存在,等等,然後如果有錯誤,返回紅色錯誤(典型的登錄或任何表單頁面驗證)的登錄頁面。<html:errors> struts教程或例子

我想知道是否有人知道Struts中的錯誤管理教程。我正在尋找一個教程(或例子)

<html:errors> 

標籤,我認爲這將解決我的問題。

回答

10

這是一個快速總結。你有一個ActionForm類,說MyForm

<form-bean name="myForm" type="myapp.forms.MyForm"/> 

你有一個Action類,說MyAction

<action path="/insert" type="myapp.actions.MyAction" name="myForm" 
    input="/insert.jsp" validate="true" /> 
    <forward name="success" path="/insertDone.jsp"/> 
</action> 

「名」 的行爲是指形式豆 「名」。因爲你有你的validate="true"ActionFormMyForm類必須定義validate()方法,它會自動被調用:

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 
    ActionErrors errors = new ActionErrors(); 
    if ((username==null) || (username.length() < 1)) 
     errors.add("username", new ActionError("error.username.required")); 
    return errors; 
} 

如果它返回一個空的ActionErrors對象,Struts的推移打電話給你MyAction.execute()。否則,Struts將顯示/insert.jsp(因爲這是您輸入的參數= parm)並擴展了html.errors標記以顯示ActionErrors中的錯誤。

14

這裏有一個: //struts.apache.org/1.3.5/struts-taglib/apidocs/org/apache/struts/taglib/html/package-summary.html#package_description

這裏我米假設的Struts 1。我不知道,如果它已經改變了對Struts 2

你可以把一個errors.header和errors.footer到您的信息資源文件:

errors.header=<h3><font color="red">Errors:</font></h3><ul> 
errors.footer=</ul> 

頁眉和頁腳僅當ActionErrors對象中有任何錯誤時才顯示。返回前

ActionErrors errors = new ActionErrors(); 
if (badInput) { 
    errors.add(ActionErrors.GLOBAL_ERROR, 
    new ActionError("error.bad.input", badString); // key in messages resource file 
            // badString will replace {0} in message 
} 

然後:

在你的Action類,這樣做

saveErrors(request, errors); 

在您的信息資源文件:

error.bad.input=<li>Bad input: '{0}' is invalid.</li> 

現在,當被處理的<html:errors/>標籤,它會變成:

<h3><font color="red">Errors:</font></h3><ul> 
<li>Bad input: 'xxyyzzz' is invalid.<li> 
</ul> 
+0

這當然是一個豐富多彩的答案,不是嗎?我還沒有掌握格式如何在這裏工作。 – 2009-06-02 03:24:22

+0

非常感謝您的回答!我仍然試圖驗證(在你的sugestiongs之後,他們真的很棒!我需要這樣的東西,都在同一個地方解釋過),我會告訴你它何時有效! ;) – Tere 2009-06-04 02:13:23