java - Liferay 与 Spring 2.5 中的 Spring-json 问题

标签 java json spring spring-mvc liferay

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

关注项目网站instructions ,我设法使请求在我的 Controller 中命中,但是在通过 modelAndView 对象返回 json 对象时,它失败并出现以下错误:

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

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

这是我的 View 解析器代码:

<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"/> 

还有我的 Controller :

@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);
} 

有什么想法吗?

最佳答案

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

<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;
    }

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

关于java - Liferay 与 Spring 2.5 中的 Spring-json 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3063953/

相关文章:

java - Hibernate 额外懒惰不工作

java - 声明字符串对象的混淆

java - 在 Android Studio 中构建 Google Endpoints 后端时出现 403 禁止错误

java - 即使 java 中对象的状态相同,也等于给出 false

python - 用于映射的漏勺模式,其中键是可变的,但值是数组

json - 使用嵌套的未知 ID 在 swift 4 中解析 JSON

PHP mysql 从 json 插入/更新

spring - 在 spring mvc Controller 中设置区域设置

java - @EnableWebSecurity 和 @EnableWebMvcSecurity 有什么区别?

java - spring mvc tomcat错误