Как скрыть HTML-тег в JSF, чтобы вернуть только JSON? - PullRequest
0 голосов
/ 06 декабря 2011

Я использую JSF с Facelets 1.1.14 и мне нужно вернуть JSON-ответ на ajax-запрос.Но я получаю в ответ тег html .Как я могу скрыть это, чтобы отправлять только данные JSON?

Главная страница

<html xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
  <ui:composition template="../templates/JSONTemplate.xhtml">
    <ui:define name="content">
      <h:outputText escape="false" value="#{myjson}" />
    </ui:define>    
  </ui:composition>
</html>

Шаблон

<html xmlns:ui="http://java.sun.com/jsf/facelets">
  <ui:insert name="content" />
</html>

Примечание: решение без шаблона лучше.

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Просто удалите тег <html>.

<ui:composition template="../templates/JSONTemplate.xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html">
    <ui:define name="content">
        <h:outputText escape="false" value="#{myjson}" />
    </ui:define>    
</ui:composition>

и

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets">
    <ui:insert name="content" />
</ui:composition>

Что касается решения без шаблонов, используйте JAX-RS вместо JSF.JSF - это инфраструктура веб-MVC, а не платформа веб-служб.

См. Также:

0 голосов
/ 06 декабря 2011

РЕШЕНО:

Я только что удалил файл xhtml и навигационный чемоданчик в face-config.xml.Затем я перехватываю ответ и пишу непосредственно мою строку json.

// code in MyBean.java
getResponse().getWriter().append(getMyJSON());
return null;

Как сказал BalusC, лучше использовать JAX-RS, но мне нужно более быстрое решение для разработки.

...