0
我試圖呈現一些錯誤的觀點,但錯誤只出現在第二次提交。來自hasErrors的錯誤只出現在第二次提交
//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")}"/>
...
那麼,在第一次提交錯誤後顯示沒有錯誤出現。 當我更改驗證規則,空白字段時,案例再次重複。 如果在第一次提交時這些字段爲空白,則在第二次提交後出現錯誤時不會顯示錯誤。 有什麼建議嗎?
內部服務器錯誤是500不是400 ... –