私はSpring APIからmodelAndViewオブジェクトを返しています。ビューはJSPフォームです。 APIへの要求パラメータは、DTO PaymentInputにバインドされています。 APIはlocalhost上で正常に動作していますが、サーバーにデプロイすると空白の応答を出しています。私はログをチェックしましたが、例外はありません。SpringモデルとビューHTMLフォームを返すときにブランク出力を返す
編集
私は新しいのModelAndView変更( "payuFormを"、 "paymentInput"、paymentInput)。 to ModelAndView mav = new ModelAndView(new MappingJackson2JsonView()); それは、JSON
"paymentInput": {
"furl": "https://dev.travelkhana.com/callback/PayUfurl",
"surl": "https://dev.travelkhana.com/callback/PayUsurl",
"txnid": "472663",
"key": "gtKFFx",
"hash": "3c0eeb0cefd5c0637e0a50adee3fd0fe81af6c69f46a52b2fa50711eafa054b43af13957c02ef3a71c0dbcb8c05129829281fd256a55c0c0c04bbc40c84fd474",
"orderid": "472663",
"email": "[email protected]",
"emailid": "[email protected]",
"amount": "270",
"productinfo": "vegthali,nonvegthali",
"firstname": "rahul",
"phone": "9716221914"
}
として出力を返す開始しますが、まだそれはHTMLレスポンスのために働いていません。
payuForm.jsp
<%@page import="com.tk.utilities.CommonFunction"%>
<%
String paymentUrl = CommonFunction.getProperties("payu_payment_url");
System.out.println("paymentUrl:"+paymentUrl);
%>
<html>
<head>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
</head>
<body>
<form:form action="<%=paymentUrl%>" method="post" id='payuForm' modelAttribute="paymentInput">
<form:input type="hidden" name="firstname" path="FIRSTNAME"/>
<form:input type="hidden" name="surl" path="surl"/>
<form:input type="hidden" name="furl" path="furl" />
<form:input type="hidden" name="phone" path="PHONE" />
<form:input type="hidden" name="email" path="EMAIL" />
<form:input type="hidden" name="amount" path="AMOUNT" />
<form:input type="hidden" name="key" path="key" />
<form:input type="hidden" name="hash" path="hash" />
<form:input type="hidden" name="txnid" path="txnid" />
<form:input type="hidden" name="productinfo" path="PRODUCTINFO" />
<input type="hidden" name="isMobileView" value="1" />
</form:form>
</body>
</html>
Modelクラス
package com.tk.payu.dto;
public class PaymentInput {
private String AMOUNT;
private String ORDERID;
private String PRODUCTINFO;
private String FIRSTNAME;
private String EMAIL;
private String EMAILID;//for mapping EMAILID to EMAIL
private String PHONE;
private String furl;
private String surl;
private String txnid;
private String key;
private String hash;
PaymentInput.java
public String getFurl() {
return furl;
}
public void setFurl(String furl) {
this.furl = furl;
}
public String getSurl() {
return surl;
}
public void setSurl(String surl) {
this.surl = surl;
}
public String getTxnid() {
return txnid;
}
public void setTxnid(String txnid) {
this.txnid = txnid;
}
public String getAMOUNT() {
return AMOUNT;
}
public void setAMOUNT(String aMOUNT) {
AMOUNT = aMOUNT;
}
public String getORDERID() {
return ORDERID;
}
public void setORDERID(String oRDERID) {
ORDERID = oRDERID;
}
public String getPRODUCTINFO() {
return PRODUCTINFO;
}
public void setPRODUCTINFO(String pRODUCTINFO) {
PRODUCTINFO = pRODUCTINFO;
}
public String getFIRSTNAME() {
return FIRSTNAME;
}
public void setFIRSTNAME(String fIRSTNAME) {
FIRSTNAME = fIRSTNAME;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getHash() {
return hash;
}
public void setHash(String hash) {
this.hash = hash;
}
public String getPHONE() {
return PHONE;
}
public void setPHONE(String pHONE) {
PHONE = pHONE;
}
public String getEMAIL() {
return EMAIL;
}
public void setEMAIL(String eMAIL) {
EMAIL = eMAIL;
}
public String getEMAILID() {
return EMAILID;
}
public void setEMAILID(String eMAILID) {
EMAILID = eMAILID;
}
}
コントローラ
@RequestMapping(value = "/payuPaymentNew", method = RequestMethod.POST)
public @ResponseBody ModelAndView payuPaymentNew(
@ModelAttribute("paymentInput") PaymentInput paymentInput,
BindingResult result) throws IOException {
String SURL = CommonFunction.getProperties("payu_surl");
String FURL = CommonFunction.getProperties("payu_furl");
System.out.println("order id:" + paymentInput.getORDERID());
String salt = CommonFunction.getProperties("salt");
String key = CommonFunction.getProperties("key");
paymentInput.setSurl(SURL);
paymentInput.setFurl(FURL);
paymentInput.setKey(key);
System.out.println("payumasterDao:.....");
return new ModelAndView("payuForm", "paymentInput", paymentInput);
}
予想される出力
<html>
<head>
</head>
<body>
<form id="payuForm" action="" method="post">
<input id="FIRSTNAME" name="FIRSTNAME" name="firstname" type="hidden" value="rahul"/>
<input id="surl" name="surl" name="surl" type="hidden" value=""/>
<input id="furl" name="furl" name="furl" type="hidden" value="/>
<input id="PHONE" name="PHONE" name="phone" type="hidden" value="9716221914"/>
<input id="EMAIL" name="EMAIL" name="email" type="hidden" value="[email protected]"/>
<input id="AMOUNT" name="AMOUNT" name="amount" type="hidden" value="270"/>
<input id="key" name="key" name="key" type="hidden" value=""/>
<input id="hash" name="hash" name="hash" type="hidden" value="3c0eeb0cefd5c0637e0a50adee3f/>
<input id="txnid" name="txnid" name="txnid" type="hidden" value="472663"/>
<input id="PRODUCTINFO" name="PRODUCTINFO" name="productinfo" type="hidden" value="vegthali,nonvegthali"/>
<input type="hidden" name="isMobileView" value="1" />
</form>
</body>
</html>
XMLエントリ
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
'@ ResponseBody'を削除します。 –
お返事ありがとうございます。 \t @ResponseBodyを削除しようとしましたが、me.Actually API/payuPaymentNewがlocalhostで期待どおりに動作していますが、同じコードがサーバー上で空白の応答を返します。 –
'@ ResponseBody'は結果を返すためのものであり、解釈されないため、(両方のシステムでまったく別の設定を使用しない限り)うまく動作しません。また、私は '@ RestController'を使用していますが、それを削除して代わりに' @Controller'を使用してください。 –