代码之家  ›  专栏  ›  技术社区  ›  walnutmon

Spring MVC AJAX and JSON using Custom View Resolver, and Custom View

  •  1
  • walnutmon  · 技术社区  · 15 年前

    自定义视图:

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

    控制器:

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

    For some reason this doesn't work... The only view resolver I have is the following:

    <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。

    1 回复  |  直到 15 年前
        1
  •  0
  •   walnutmon    15 年前

    好吧,在尝试了一百万种组合之后

    @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>
    

    I don't really understand how I can return an object from here...

    但这其实很简单,也很有用,是不可接受的,因为后来我去了我网站的其他页面,只是在URL后面放了一个任意的“.json”,它抛出了一个异常,给了用户太多关于我的应用程序的信息,所以基本上我需要找到一种方法,只在一定的控制下拥有这种能力。有安全保障的人…

    有什么想法吗?