簡體   English   中英

調用兩種方法以返回Java中的不同頁面

[英]Calling Two Methods To Return Different Pages In 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,如果感到困惑或不正確,請您道歉。

感謝所有幫助。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM