【问题标题】:Spring Model and View Returning blank output when returning HTML formSpring模型和视图返回HTML表单时返回空白输出
【发布时间】:2016-11-28 14:07:33
【问题描述】:

我正在从我的 Spring API 返回 modelAndView 对象。而view是一个JSP表单。 API 的请求参数与 DTO PaymentInput 绑定。 该 API 在 localhost 上运行良好,但在部署到服务器时给出空白响应。我检查了日志,但没有例外。

已编辑

当我更改 new ModelAndView("payuForm", "paymentInput", paymentInput); 到 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": "test@test.com",
    "emailid": "test@test.com",
    "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>

模型类

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="test@test.com"/>
            <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。
  • 感谢您的回复。我尝试删除 @ResponseBody 但它对我不起作用。实际上 API /payuPaymentNew 在 localhost 上按预期工作,但相同的代码在服务器上返回空白响应。
  • @ResponseBody 用于返回结果而不是被解释,因此它无法工作(除非您在两个系统上使用完全不同的配置)。另外我你使用@RestController,你应该删除它并改用@Controller。

标签: java spring model-view-controller


【解决方案1】:

从您的控制器中删除 @ResponseBody。

@ResponseBody 注解基本上是在告诉 Spring:获取对象 I(方法)返回并使用您拥有的任何支持它的序列化程序,并将其直接写入 HTTP 响应的主体。 这里不涉及 JSP。

【讨论】:

  • 我尝试删除 @ResponseBody 但它对我不起作用。实际上 API /payuPaymentNew 在本地主机上按预期工作,但相同的代码在服务器上返回空白响应。
  • 你能测试一下变化吗:return new ModelAndView("payuForm", "paymentInput", paymentInput);对于
  • 你能测试更改吗:return new ModelAndView("payuForm", "paymentInput", paymentInput); for return new ModelAndView("**P**ayuForm", "paymentInput", paymentInput);
  • 我的 jsp 文件的名称是 payuForm.jsp 而不是 PayuForm.jsp 我也编辑过它。
  • 我尝试使用 ModelAndView mav = new ModelAndView(new MappingJackson2JsonView()); 将输出更改为 json 视图,现在它正在返回
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 2012-10-04
  • 2017-05-22
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
相关资源
最近更新 更多