RichFaces Ajax (условно) Рендеринг: Как? - PullRequest
0 голосов
/ 12 апреля 2011

Пожалуйста, посмотрите следующий фрагмент кода:

<h:form>
    <h:panelGrid columns="2">
        <h:inputText value="#{vehicleBean.pin}" />
        <a4j:commandButton action="#{vehicleBean.loadVehiclesByPin}" render="results"/>
    </h:panelGrid>
</h:form>
<a4j:outputPanel id="results">
    <rich:dataTable value="#{vehicleBean.vehicles}" rendered="#{not empty vehicleBean.vehicles}">
        ...
    </rich:dataTable>
</a4j:outputPanel>

Когда я нажимаю кнопку, отправляется запрос Ajax для загрузки некоторых бизнес-объектов.Они отображаются в rich: dataTable, который отображается только в том случае, если соответствующий массив не пустой.

Это работает для меня в Chrome Firefox 4, но не в IE9.Но я почти уверен, что это моя вина, а не IE;элемент рендеринга)?

Какой элемент (-ы) следует повторно отрендерить? CommandButton также имеет атрибут execute: когда и почему я должен использовать этот атрибут?1016 *

Привет Себи

Ответы [ 2 ]

0 голосов
/ 28 января 2014

некоторые вещи, которые вы могли бы исправить:

  1. пусть ваш тег формы окружает все компоненты JSF
  2. если loadVehiclesByPin полагается на значение pin, вы должны выполнить компонент inputText (назначить ему идентификатор, например, "inputPin" ) с помощью commandButton: execute = "@ this inputPin"
  3. Я не уверен, если вы используете правильное значение in в render = "result" (знайте о концепции NamespaceContainer, прочитайте javadoc из UIComponent.findComponent )

для лучшей отладки, я предлагаю включить PROJECT_STAGE = Development в web.xml и открыть консоль javascript вашего браузера.

Имейте в виду, что при использовании условного рендеринга вам необходимо указать свой параметр рендеринга для идентификатора в дереве компонентов JSF, который уже существует (вы сделали это прямо здесь, окружив вашу условную таблицу данных панелью)

1021 * привет *

0 голосов
/ 20 июля 2011

RichFaces 3.x не поддерживает IE9, см. Этот пост: http://community.jboss.org/thread/156720

Вы можете перейти на RF 4, или примените фильтр, чтобы заставить IE9 работать в режиме совместимости:

public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
    HttpServletResponse resp = (HttpServletResponse) response;
    resp.addHeader("X-UA-Compatible", "IE=EmulateIE8");
    chain.doFilter(request, resp);
}
...