2009-10-31 11 views
17

पर त्रुटि के लिए कैसे जांचें मैं अपने आवेदन में एक खोज पृष्ठ को संभालने के लिए स्प्रिंग फॉर्म लाइब्रेरी का उपयोग कर रहा हूं। यहाँ एक सेम विन्यास दिखा मेरी डीडी से snipped है:स्प्रिंग फॉर्म - विशिष्ट पथ

<bean name="/search.html" class="myapp.web.AccountSearchController"> 
     <property name="sessionForm" value="true"/> 
     <property name="commandName" value="searchAccounts"/> 
     <property name="commandClass" value="myapp.service.AccountSearch"/> 
     <property name="validator"> 
      <bean class="myapp.service.AccountSearchValidator"/> 
     </property> 
     <property name="formView" value="accountSearch"/> 
     <property name="successView" value="accountSearch"/> 
    </bean> 

सत्यापनकर्ता वर्ग काफी सरल है:

package myapp.service; 

import org.springframework.validation.Validator; 
import org.springframework.validation.Errors; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class AccountSearchValidator implements Validator { 

    /** Logger for this class and subclasses */ 
    protected final Log logger = LogFactory.getLog(getClass()); 

    public boolean supports(Class clazz) { 
     return AccountSearch.class.equals(clazz); 
    } 

    public void validate(Object obj, Errors errors) { 
     AccountSearch accountSearch = (AccountSearch) obj; 
     if (accountSearch == null) { 
      errors.rejectValue("domainName", "error.accountSearch.neither-specified", null, "Value required."); 
     } else if (accountSearch.getAccountId().isEmpty() && 
        accountSearch.getDomainName().isEmpty()) { 
      errors.rejectValue("domainName", "error.accountSearch.neither-specified", null, "Value required."); 
     } 
    } 
} 

मेरी JSP में, मेरा रूप एक HTML तालिका में प्रदर्शित होता है। मैं फ़ील्ड विशिष्ट त्रुटियों को संबंधित फ़ील्ड के नीचे एक अलग टेबल पंक्ति के रूप में प्रदर्शित करना चाहता हूं। यहाँ एक टुकड़ा है:

  <tr> 
       <td align="right" valign="top"><form:label path="domainName">Domain Name</form:label>:</td> 
       <td><form:input path="domainName" size="30"/></td> 
      </tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td><form:errors path="domainName" cssClass="error"/></td> 
      </tr> 

सवाल मेरे पास है है - कैसे मैं त्रुटि पंक्ति के उत्पादन में त्रुटि के अस्तित्व पर सशर्त बना सकते हैं? क्या मेरे जेएसपी से वैलिडेटर इंस्टेंस सुलभ है? सी के लिए परीक्षण क्या होगा: अगर टैग?

धन्यवाद,

-aj

उत्तर

34

ठीक यह कुछ दिनों मुझे ले गया लेकिन मैं यह समझ से बाहर:

<c:set var="domainNameErrors"><form:errors path="domainName"/></c:set> 
    <c:if test="${not empty domainNameErrors}"> 
     <tr> 
      <td>&nbsp;</td> 
      <td>${domainNameErrors}</td> 
     </tr> 
    </c:if> 

यह आलेख बहुत उपयोगी था: http://forum.springsource.org/archive/index.php/t-51044.html

1

मुझे लगता है कि this article वर्णन करता है कि आप अच्छा विवरण

में आवश्यकता
+0

हाय, आपकी टिप्पणी के लिए धन्यवाद लेकिन मुझे नहीं पता कि आपने लिंक में कहां दिया है कि वे स्प्रिंग फॉर्म लाइब्रेरी का उपयोग कर रहे हैं। यदि आपके पास स्प्रिंग फॉर्म के लिए विशिष्ट जानकारी है, तो कृपया एक और उत्तर पोस्ट करें। धन्यवाद! –

7

उपयोग <spring:hasBindErrors name="loginPasswordForm">

3

उपयोग <spring:bind path="fieldName"> और status.error जाँच लें कि क्षेत्र त्रुटि है

उदाहरण

देखने के लिए
<spring:bind path="phoneNumber"> 
    <form:input path="phoneNumber" /> 
    <form:errors path="phoneNumber" cssClass="error" /> 
    ${status.error ? 'has error' : ''} 
</spring:bind> 

नोट

<form:input path="" /><spring:bind > टैग के अंदर होना चाहिए

+0

हम पथ के लिए इस विधि का उपयोग कैसे कर सकते हैं? क्या होगा यदि मैं फॉर्म की शुरुआत में ' 'घोषित करता हूं, तो इसका उपयोग व्यक्तिगत पथों के लिए कैसे किया जाएगा? –

+0

जो मैंने पाया वह फॉर्म है: इनपुट '' टैग के अंदर होना चाहिए। ' ' – Smith

3

इस जांच करें कोड सेगमेंट

<spring:bind path="domainName"> 
    <c:if test="${status.error}"> 
    <tr> 
     <td>&nbsp;</td> 
     <td><form:errors path="domainName" cssClass="error"/></td> 
    </tr> 
    </c:if> 
</spring:bind> 
2

वास्तव में एक सरल समाधान है। मैंने इसे कहीं भी नहीं देखा है, लेकिन ऐसा लगता है कि यह सबसे आसान है।

<tr> 
    <td align="right" valign="top"><form:label path="domainName">Domain Name</form:label>:</td> 
    <td><form:input path="domainName" size="30"/></td> 
</tr> 
<form:errors path="domainName"> 
<tr> 
    <td>&nbsp;</td> 
    <td><form:errors path="domainName" cssClass="error"/></td> 
</tr> 
</form:errors> 

प्रपत्र जब: त्रुटियों टैग कोई शरीर यह डिफ़ॉल्ट mecanism साथ त्रुटि renders है, लेकिन जब टैग एक शरीर है, यह सिर्फ अगर उस पथ के लिए एक त्रुटि है शरीर बना देता है।

+0

परिभाषित करने के लिए आपको प्रत्येक पथ के लिए कौन सा मतलब है, यह सर्वलेट वातावरण में काम करता है, लेकिन पोर्टल पर्यावरण में विफल रहता है। फिर भी जांच कर रहा है, मेरा प्रश्न http://stackoverflow.com/q/35596690/637423 देखें – Geert

संबंधित मुद्दे