2014-09-11 3 views
1

У меня проблема с обновлением внешней формы. Чтобы быть более ясным, у меня есть основная форма, которая включает в себя 2 разных составных компонента, позволяет включать include1 и include2. Страница, которую я хочу обновить, - это обновление include2 после поиска из include1.Как обновить составную компонентную форму из другого составного компонента?

вот как 2 страницы включены.

<ui:define name="include1"> 
    <ui:param name="mbean" value="#{currentBean}" /> 
    <libcomp:include1 /> 
</ui:define> 

<ui:define name="include2"> 
    <ui:param name="mbean" value="#{currentBean}" /> 
    <libcomp:include2> 
</ui:define> 

Теперь в включают1 У меня есть кнопка, которая пытается обновить форму внутри включают2

update="include2Form" 

и в включают2 У меня есть

<cc:implementation> 
    <h:form 
     id="include2Form"> 

При попытке загрузить страницу Я всегда получаю сообщение об ошибке 500, говорящее, что «include2Form» не найден!

Я пробовал некоторые исследования, прежде чем приехать сюда, но никто не помог мне, я пытался изменить форму на DIV, пытался передать идентификатор параметром, панели, форма с prependId = ложь и т.д. ...

Использование Firebug я узнал, что JSF или Primefaces является добавление случайной строки в моей форме/компонентов ID ..., как

ид = «j_idt99: include2Form: MYTABLE»

Я думаю, что причина моей проблемы и Я пытаюсь найти работу.

Может ли кто-нибудь мне помочь?

+1

Пища для чтения: http://stackoverflow.com/questions/8634156/cannot-find-component-with-identifier-foo-in-view-fajax-contains-an-unkno – BalusC

+1

И также http://stackoverflow.com/questions/6822000/when-to-use-uiinclude-tag-files-composite-components-and-or-custom-componen – skuntsel

ответ

1

Прежде всего, дополнительная строка в вашем идентификаторе напрямую поступает из JSF, не связанного с PrimeFaces, потому что сам составной компонент является UINamingContainer. Это ожидаемое поведение и даже необходимо, потому что в противном случае вы столкнетесь с повторяющимися конфликтами ID при одновременном использовании одного и того же CC несколько раз в одном представлении.

По-моему, плохая конструкция имеет форму внутри Компонентный компонент вообще. Для того, чтобы улучшить повторное использование только избавиться от этой формы и работать с process, partialSubmit, возможно f:subView и т.д ..

Кроме этого, вы должны пересмотреть свой дизайн. Точка, что один составной компонент должен обновить с. снаружи компонент может быть индикатором, что композитный компонент не является идеальным подходом для покрытия ваших требований.

Однако, если вы действительно должны обновления некоторые части вашего зрения вне составного компонента, просто передать идентификатор, что для обновления с помощью составного атрибута к вашему CC и пусть CC не заботиться о том, что и где обновить

<composite:interface> 
    <composite:attribute name="update" required="true" /> 
</composite:interface>