我正在尝试向视图呈现一些错误,但这些错误仅出现在第二次提交中。
//Controller Method
def submitUserInfo = { UserDetailsCommand command ->
if(!session.upgradeActive) {
return upgradeProcessEnded();
}
User user = springSecurityService.currentUser;
if(!user.userDetails) {
user.userDetails = new UserDetails(params);
user.userDetails.user = user;
}
else {
user.userDetails.properties = params;
}
if (!command.hasErrors()) {
if (!params.firstName)
{
user.userDetails.errors.rejectValue('firstName',message(code: 'base.subscription.errors.generalOutput', args: [message(code: 'base.user.firstName.label')]))
}
if (!params.lastName)
{
user.userDetails.errors.rejectValue('lastName',message(code: 'base.subscription.errors.generalOutput', args: [message(code: 'base.user.lastName.label')]))
}
// Internal Server Error Code
response.status = 400
return render (view: 'userInfo', model: [userInstance: user])
}
...
}
//Class
@Validateable
class UserDetailsCommand {
// Properties
String firstName
String lastName
String phoneNumber
//Company
String companyName
String companyPhoneNumber
String address
String postalCode
String country
String city
String state
static constraints = {
firstName nullable: false
lastName nullable: false
address nullable: false
postalCode nullable: false
country nullable: false
city nullable: false
state nullable: false
companyName nullable: false
}
}
//View
<g:if test='${flash.message}'>
<div class="control-group primary-background">
<div class='alert alert-error'>
<i class="icon-exclamation-sign"></i>
${flash.message}
</div>
</div>
<%-- Clear messages to prevent showing on refresh --%>
${flash.clear()}
</g:if>
<g:hasErrors bean="${userInstance.userDetails}">
<div class="control-group primary-background">
<p class="alert alert-error">
<g:each var="error" in="${userInstance.userDetails.errors.allErrors}">
<i class="icon-exclamation-sign"></i>
<g:message error="${error}" />
<br />
</g:each>
</p>
</div>
</g:hasErrors>
<div class="flex_column one_half first">
<g:hiddenField name="id" value="${ userInstance?.id }"/>
<h3><g:message code="base.user.details.title" /></h3>
<strong><g:message code="base.user.email.label" />: </strong>
${fieldValue(bean: userInstance, field: "username")}
<label for="firstName"><g:message code="base.user.firstName.label" /></label>
<g:textField name="firstName" value="${fieldValue(bean: userInstance.userDetails, field: "firstName")}"/>
<label for="lastName"><g:message code="base.user.lastName.label" /></label>
<g:textField name="lastName" value="${fieldValue(bean: userInstance.userDetails, field: "lastName")}"/>
...
好吧,在第一次提交中没有出现错误,然后显示错误。当我更改验证规则时,空白字段,情况再次重复。如果第一次提交中的字段为空白,则在第二次提交后不会出现错误。有什么建议吗?