2015-10-27 58 views
0

我有一种方法来检查用户输入是否正确,因为卡信息&返回错误消息(服务器端)的方法。调用两种方法返回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很抱歉,如果这是令人困惑或不正确的。

所有帮助表示赞赏。

回答

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)在控制器,调用此validate方法并且如下处理。

@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;"/> 
添加此下方元素
相关问题