/ / freemarker टेम्पलेट में वसंत त्रुटियों को प्रदर्शित करने के लिए कैसे - वसंत, सत्यापन, वसंत-एमवीसी, freemarker

freemarker टेम्पलेट में वसंत त्रुटियों को प्रदर्शित करने के लिए कैसे - वसंत, सत्यापन, वसंत-एमवीसी, freemarker

एक फ्रीमार्कर टेम्पलेट में मेरी सत्यापन त्रुटियों को प्रदर्शित करने के लिए मैं सभी अनुमोदन विफल करता हूं। मैं वसंत एमवीसी संस्करण 3 का उपयोग करें।

मेरा फॉर्म ऐसा दिखता है

<@layout.basic>
<@spring.bind "user" />
<#if spring.status.error>
<div class="errors">
There were problems with the data you entered:
<ul>
<#list spring.status.errorMessages as error>
<li>${error}</li>
</#list>
</ul>
</div>
<#else>
<div class="errors">
There are no errors.
</div>
</#if>
<form action="" method="POST">
<dl>
<dt>Login:</dt>
<dd><@spring.formInput  "user.name" />
<dd><@spring.showErrors "<br>" />
<dt>E-Mail:</dt>
<dd><@spring.formInput "user.email" />
<dd><@spring.showErrors "<br>" />
<dt>Password:</dt>
<dd><@spring.formPasswordInput "user.passwort" />
<dd><@spring.showErrors "<br>" />
<dt>Password verification:</dt>
<dd><input type="password" name="passVerification"/>
<dd><@spring.showErrors "<br>" />
<dt>Should the User have administrator rights?</dt>
<dd><input type="checkbox" name="isAdmin"/>
<dd><@spring.showErrors "<br>" />
<br>
<dd><input type="submit" value="Create" />
</dl>
</form>

मेरा मूल लेआउट ऐसा दिखता है

<#macro basic>
<#-- needed for query spring security status -->
<#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />
<!DOCTYPE HTML>
<html>
<head>
<title>Testform</title>
</head>
<body>
<div id=header>
<@security.authorize ifAnyGranted="ROLE_ADMIN">
<a href="<@spring.url "/user/add" />">Add user | </a>
<a href="<@spring.url "/user/manage" />">Manage users | </a>
</@security.authorize>
<@security.authorize ifAnyGranted="ROLE_USER">
<a href="<@spring.url "/job/add" />">Add job | </a>
<a href="<@spring.url "/job/show" />">Show jobs | </a>
</@security.authorize>
</div>
<div id=errors>
</div>
<div id=content>
<#nested>
</div>
<div id=footer>
<@security.authorize ifAnyGranted="ROLE_USER">
<a href="<@spring.url "/j_spring_security_logout" />">Logout</a>
</@security.authorize>
</div>
</body>
</html>
</#macro>

मैंने अपनी सर्वलेट कॉन्फ़िगरेशन में spring.ftl को परिभाषित किया

<property name="freemarkerSettings">
<props>
<prop key="auto_import">layout.ftl as layout, spring.ftl as spring</prop>
</props>
</property>

और मेरा नियंत्रक इस तरह दिखता है

@RequestMapping( value = "/add", method = RequestMethod.POST )
public String addUser(
@RequestParam(value="isAdmin",defaultValue="false") Boolean isAdmin,
@RequestParam(value="passVerification" ) String passVerification,
@ModelAttribute("user") C_UserDAO newUser
) {
final BindException errors = new BindException( newUser, "user" );
m_userValidator.validate( newUser, errors );
...
if( !newUser.getPassword().equals( passVerification ) && !newUser.getPassword().equals( "" ) ) {
errors.rejectValue( "password", "user.password.missmatch", "The passwords aren"t equal, try again" );
}
if( errors.hasErrors() ) {
return "addUserForm";
}
...
return "redirect:thanks.html";
}

सत्यापन एक आकर्षण की तरह काम करता है, लेकिन जब एकत्रुटि उत्पन्न होती है, दृश्य नहीं बदलता है और कोई त्रुटि दिखाई नहीं देती है। मैंने बार-बार प्रलेखन पढ़ा है, लेकिन मैं समस्या को हल करने के लिए कोई क्लौ नहीं ढूंढ सकता। मेरी त्रुटि क्या है?

उत्तर:

उत्तर № 1 के लिए 13

मैं फ्रीमार्कर से परिचित नहीं हूं, लेकिन मैं आपका देखता हूं BindingResult मॉडल से जुड़ा नहीं है। इसी मॉडल विशेषता के ठीक बाद आपको इसे अपनी विधि के हस्ताक्षर में जोड़ना होगा:

@RequestMapping( value = "/add", method = RequestMethod.POST )
public String addUser(
@RequestParam(value="isAdmin",defaultValue="false") Boolean isAdmin,
@RequestParam(value="passVerification" ) String passVerification,
@ModelAttribute("user") C_UserDAO newUser,
BindingResult errors
) {
...
}