1

自定义视图:

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

4

1 回答 1

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”,它抛出了一个异常,给用户提供了太多信息关于我的应用程序,所以基本上我需要想办法只在某些安全的控制器上拥有这种能力......

有任何想法吗?

于 2010-06-25T21:00:27.237 回答