【问题标题】:Spring MVC AJAX and JSON using Custom View Resolver, and Custom ViewSpring MVC AJAX 和 JSON 使用自定义视图解析器和自定义视图
【发布时间】:2010-06-25 20:34:01
【问题描述】:

自定义视图:

public class MyView extends AbstractView {
   .... awesome stuff ...
}

控制器:

@RequestMapping(value="mylocation")
public ModelAndView dosomething() {
...
   modelAndView.setView( new MyView() );
   return modelAndView;
}

由于某种原因,这不起作用...我拥有的唯一视图解析器如下:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" >
        <property name="exposedContextBeanNames">
            <list>
                <value>spEnv</value>
            </list>
        </property>
    </bean>

此代码不起作用,因为它正在尝试基于...创建一些 JSP 视图...我不确定,我的表单提交路径;并且显然没有 JSP 视图,我希望 JSON 实际返回,但由于某种原因这不起作用,它只是试图将我转发到某个 JSP,所以我猜我需要指定如何在我的 XML 中处理这个......但我已经看到了大约 1000 种人们返回 JSON 的不同方式,所有这些方式都让我很困惑,我只是在寻找最简单的方式,所以我可以从那里

编辑:我添加了一个好的开始答案,但它允许您在任何 URL 之后键入“.json”,如果作为控制器我不期望它会做一些非常糟糕的事情,所以我需要以某种方式让此视图解析器仅适用于安全 URL

【问题讨论】:

    标签: java json spring-mvc custom-view


    【解决方案1】:

    好的,在尝试了一百万种组合之后终于

    @RequestMapping(value = "/test/data")
        public TestFormData dostuff() {
            TestFormData data = new TestFormData();
            data.setName("myname");
            return data;
        }
    

    然后是这个

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
            <property name="mediaTypes">
                <map>
                    <entry key="json" value="application/json"/>
                </map>
            </property>
            <property name="defaultViews">
                <list>
                    <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
                </list>
            </property>
        </bean>
    

    我真的不明白如何从这里返回一个对象...

    但这实际上,虽然简单,但非常有用是不可接受的,因为然后我去了我网站的其他页面,只是在 url 后面放了一个任意的“.json”,它抛出了一个异常,给了用户 WAY关于我的应用程序的信息太多,所以基本上我需要想办法只在某些受保护的控制器上拥有这种能力......

    有什么想法吗?

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      相关资源
      最近更新 更多