有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring调用两个方法以返回Java中的不同页面

我有一种方法来检查用户输入的卡信息是否正确&;返回错误消息的方法(服务器端)

我想返回一个付款成功的页面,如果所有信息是正确的。 如果用户输入与电子表格中的卡信息不匹配,则返回支付失败页面<&书信电报;目前我的程序可以做到这一点

如果用户将一个字段留空,即卡号,我希望它返回带有验证消息的同一页

@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,因此,如果这让人困惑或不正确,我深表歉意

感谢所有的帮助


共 (1) 个答案

  1. # 1 楼答案

    使用SpringValidator框架,您可以实现这一点

    1)创建自定义验证器&;实现如下所示的验证器类

    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;"/>