ui:repeat со списком, отправляющим правильный объект в p:dialog

В настоящее время у меня есть гигантский ui:repeat. В этом ui:repeat некоторые из повторяющихся объектов имеют URL-адрес всплывающего изображения, связанного с ними. Когда кто-то щелкает по отображению под этим конкретным объектом, мне нужен всплывающий URL-адрес в диалоговом окне p:.

<ui:repeat var="thing" value="#{bean.thingList}">
    <p:commandLink value="details" onclick="miniImage.show();" 
    update=":#{p:component('chart')}"
    action="#{bean.setCurrentImg(thing.imageUrl)}" 
    rendered="#{thing.includeImage}">
</p:commandLink>
</ui:repeat>

и внизу страницы:

<p:dialog id="chart" widgetVar="miniImage" >
    <h:graphicImage value="#{bean.currentImg}"/>
</p:dialog>

И в вспомогательном компоненте я попытался использовать простой сеттер и геттер для currentImg.

Я немного запутался в этом сейчас и хотел бы выполнить это, не отправляя всю форму. Любая помощь приветствуется.


person eisbaer    schedule 09.08.2013    source источник


Ответы (1)


Если вы используете PrimeFaces 3.3 или новее, вы можете просто добавить partialSubmit="true" к командному компоненту. Затем вы можете управлять компонентами, подлежащими обработке, в атрибуте process. В данном конкретном случае достаточно только текущего компонента (самого командного компонента), поэтому process="@this":

<p:commandLink ... process="@this" partialSubmit="true" />

Таким образом, будут отправлены только те параметры запроса, которые действительно необходимы процессу.


Не связанный с конкретной проблемой, я предлагаю использовать oncomplete вместо onclick для открытия диалогового окна. В противном случае диалоговое окно откроется до того, как произойдет update, и это может ухудшить работу пользователя, поскольку конечный пользователь увидит, что изображение мгновенно меняется.

person BalusC    schedule 09.08.2013