gpt4 book ai didi

grails - hasErrors 的错误仅出现在第二次提交中

转载 作者:行者123 更新时间:2023-12-02 15:34:54 25 4
gpt4 key购买 nike

我正在尝试向 View 呈现一些错误,但这些错误仅出现在第二次提交中。

//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")}"/>
...

好吧,在第一次提交中没有出现错误,然后显示错误。
当我更改验证规则时,空白字段,情况再次重复。
如果第一次提交中的字段为空白,则在第二次提交后不会出现错误。
有什么建议吗?

最佳答案

您只显示 if (!command.hasErrors()) { 的代码块

如果您提交空白 firstNamelastName ,它应该有错误。

如果没有,您是否应该使用 blank: false而不是 nullable: false作为 firstName 的验证人和 lastName而不是尝试推出自己的验证?

关于grails - hasErrors 的错误仅出现在第二次提交中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com