我有一种方法来检查用户输入是否正确,作为卡信息&返回错误消息的方法(服务器端)。
如果所有信息都正确,我想要返回付款成功页面。 如果用户输入与电子表格中的卡信息不匹配,则返回付款失败页面。 <<目前我的程序可以做到这一点。
如果用户留空字段即卡号,我希望它返回带有验证消息的同一页面。
@RequestMapping(value = "/payment-submission", method = RequestMethod.POST)
public String handlePaymentSubmission(@ModelAttribute PaymentDetails paymentDetails, BindingResult resulttwo) {
if (payService.isPaymentDetailsCorrect(paymentDetails)) {
return PAYMENT_SUCCESSFUL;
}
return PAYMENT_FAILED;
这是我现有的代码。
我不知道如何调用下面的方法来检查上面的验证,以确保它返回正确的页面。
private void validatePaymentDetails(final PaymentDetails paymentDetails, final BindingResult resulttwo) {
if (StringUtils.isBlank(paymentDetails.getCardNumber())) {
resulttwo.addError(new FieldError("paymentDetails", "cardNumber",
"validate.payment-details-cardnumber.empty.message"));
return;
}
}
正如之前的帖子中提到的,我是新手并且学习JAVA,如果这令人困惑或不正确,那么道歉。
感谢所有帮助。
答案 0 :(得分:0)
使用spring验证器框架,您可以实现此目的。
1)创建自定义验证器&实现Validator类,如下所示。
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
@Component
public class PaymentValidator implements Validator{
@Override
public boolean supports(Class<?> paramClass) {
return PaymentDetails.class.equals(paramClass);
}
@Override
public void validate(Object arg0, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "cardNumber", "error.cardNumber" , "Please give valid cardnumber");
}
}
2)在控制器中,调用此验证方法并按以下方式处理。
@RequestMapping(value = "/payment-submission", method = RequestMethod.POST)
public String handlePaymentSubmission(@ModelAttribute PaymentDetails paymentDetails, BindingResult result) {
paymentValidator.validate(paymentDetails, result);
if( ! result.hasErrors()) {
return PAYMENT_SUCCESSFUL;
}
return INPUT_PAGE;
}
3)在您的jsp页面中,将以下元素添加到您要显示消息的位置
<form:errors path="cardNumber" cssStyle="color: #ff0000;"/>