2013-08-28 44 views
1

嗨,我很新的struts2。從一些書籍和網站我得到了這個例子。在動作類中,它使用驗證方法來檢查邏輯。該方法從打印語句中調用bcoz。但錯誤沒有顯示在字段附近。 JST幫我Struts2上的addFieldError在字段上不顯示錯誤

的index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Home</title> 
</head> 
<body> 
<s:form action="LoginAction "> 
<s:textfield name="username" label="Username" /> 
<s:textfield name="password" label="Password" /> 
<s:submit value="Login"></s:submit> 
</s:form> 
</body> 
</html> 

struts.xml的

<package name="default" extends="struts-default"> 
     <action name="LoginAction" class="org.shammu.struts2.actions.LoginAction"> 
       <result name="success">/welcome.jsp</result> 
       <result name="input">/index.jsp</result> 
     </action> 
     <action name="emptypassthrough"> 
       <result>index.jsp</result> 
     </action> 


</package> 

LoginAction.java

package org.shammu.struts2.actions; 

import org.shammu.struts2.beans.LoginBean; 

import com.opensymphony.xwork2.ActionSupport; 

@SuppressWarnings("serial") 
public class LoginAction extends ActionSupport{ 

private String username; 
private String password; 
public String getUsername() { 
    return username; 
} 
public void setUsername(String username) { 
    this.username = username; 
} 
public String getPassword() { 
    return password; 
} 
public void setPassword(String password) { 
    this.password = password; 
} 
public String execute(){ 
    LoginBean login = new LoginBean(); 
    login.setPassword(password); 
    login.setUsername(username); 
    if (getUsername().equals("abcd")) { 
     return "success"; 
    } else { 
     return "input"; 
    } 

} 

@Override 
public void validate() { 
    if (username.length() < 3) { 
     System.out.print("user err ok"); 
     this.addFieldError(username, "Username Empty Pls provide"); 

    } 
    if (password.length() < 3) { 
     System.out.print("Pass err ok"); 
     this.addFieldError(password, "Password Empoty provride one pkls"); 
    } 

} 
} 

我不考慮執行方法。我想jst錯誤信息打印在字段附近...幫助

+1

您沒有正確使用'addFieldError'方法。第一個參數是一個字段名稱。在你的情況下,它應該是'addFieldError(「用戶名」,「用戶名空Pls提供」);'。 –

+0

Tnx很多Aleksandr ..在addFieldError中,每當我輸入用戶名,eclips下拉式的用戶名實際上是在類中聲明的字段。它得到了misundrstnad ... Tnx agan。我不知道如何投票,如果我知道,會給你1000票,bcz你有助於減少很多tm .. \ – Shameer

+0

@AleksandrM如何讓你的評論作爲答案..? – Shameer

回答

3

要顯示fielderror您需要在您的jsp中添加<s:fielderror />

它呈現字段錯誤,如果它們存在。具體的佈局取決於特定的主題。字段錯誤字符串默認情況下會被html轉義。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Home</title> 
</head> 
<body> 
<s:form action="LoginAction "> 

<s:textfield name="username" label="Username" /><s:fielderror fieldName="username"/> 
<s:textfield name="password" label="Password" /><s:fielderror fieldName="password"/> 

<s:submit value="Login"></s:submit> 
</s:form> 
</body> 
</html> 
+0

tnx ankur它的工作。 Bt一個問題。字段錯誤顯示所聲明的所有錯誤。我需要在他們相應的字段下單獨的錯誤報告。用戶名錯誤在該txt字段下,密碼錯誤在其文本文件... – Shameer

+0

@Shameer:根據您的要求修改答案。 –

+3

沒有必要在'xhtml'主題中使用''標籤進行默認錯誤報告。 –

3

您沒有正確使用addFieldError方法。該方法中的第一個參數是該字段的名稱。你的情況應該是"username"

addFieldError("username", "Username Empty Pls provide");