【问题标题】:Spring-json problem in Liferay with Spring 2.5带有 Spring 2.5 的 Liferay 中的 Spring-json 问题
【发布时间】:2010-06-17 17:19:42
【问题描述】:

我正在尝试在使用 Liferay 5.1.2(包括 Spring 2.5)完成的项目中使用库 spring-json.1.3.1。

按照项目网站instructions,我设法在我的控制器中发出请求,但在通过 modelAndView 对象返回 json 对象时,它失败并出现以下错误:

java.lang.IllegalArgumentException at com.liferay.portlet.MimeResponseImpl.setContentType(MimeResponseImpl.java:162)

我检查了 Liferays 源代码,它检查了它被设置的 contentType 是否在一个硬编码列表中,如果不是,它会抛出一个 IllegalArgumentException ,这正是操作系统发生的事情。

这是我的视图解析器代码:

<bean id="xmlFileViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">

/WEB-INF/context/views.xml 1

我的views.xml代码:

<beans>
   <bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/> 

还有我的控制器:

@SuppressWarnings("unchecked")
@Override
public ModelAndView handleRenderRequest(RenderRequest arg0,
   RenderResponse arg1) throws Exception {

   Map model = new HashMap();
         model.put("firstname", "Peter");
         model.put("secondname", "Schmitt");

   return new ModelAndView("jsonView", model);
} 

有什么想法吗?

【问题讨论】:

    标签: java json spring spring-mvc liferay


    【解决方案1】:

    这个问题是因为你需要将窗口状态设置为独占模式,所以它可以工作:

    <portlet:renderURL var="jsonRequest" windowState="<%= LiferayWindowState.EXCLUSIVE.toString() %>"><portlet:param name="actionType" value="fetchGames"/></portlet:renderURL>
    

    来自MimeResponseImpl.java的一段代码:

    public void setContentType(String contentType) {
        if (Validator.isNull(contentType)) {
            throw new IllegalArgumentException();
        }
    
        Enumeration<String> enu = _portletRequestImpl.getResponseContentTypes();
    
        boolean valid = false;
    
        if (getLifecycle().equals(PortletRequest.RESOURCE_PHASE) ||
            _portletRequestImpl.getWindowState().equals(
                LiferayWindowState.EXCLUSIVE)) {
    
            valid = true;
        }
    

    如果有人需要更多帮助,请告诉我。

    【讨论】:

    • 非常感谢,之前没有看到您的回答。但这很好用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2013-12-10
    • 2012-02-07
    • 2021-11-14
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    相关资源
    最近更新 更多