#jsf #primefaces
#jsf #первичные
Вопрос:
Например, я пытаюсь обновить общую цену в panel&rid
, как только я нажимаю на другую panel&rid.
<c:forEach items="#{coinsBean.selectedCountryVo.selectedGameVo.operatorGamePacka&eVos}" var="operatorGamePacka&eVo" &&t;
<h:panelGrid id="pack_#{operatorGamePacka&eVo.id}"
styleClass="bord"
style="border:solid #cbcbcb; mar&in: 4vmin; min-width: -webkit-fill-available;text-ali&n: center;border-radius: 2vmin;"
onclick="selectUcs(this.id);"
&&t;
<p:commandLink style="border-radius: 2vmin; paddin&: 2vw;back&round-size: 4vmin;text-ali&n: center;font-family: 'Cairo', sans-serif "
update="totalSelected" action="#{coinsBean.selectOperatorGamePacka&eVo(operatorGamePacka&eVo)}"
value="#{operatorGamePacka&eVo.packa&eName}"
/&&t;
</h:panelGrid&&t;
</c:forEach&&t;
<h:panelGrid columns="1" id="totalSelected" style="back&round-color: white;
paddin&-left: 5vh;border-radius: 0 0 1vh 1vh;mar&in-bottom: 2vh;width:95%;mar&in:auto;text-ali&n: left ;"&&t;
<h:panelGrid&&t;
<p id="total" style="color: #FE6D2C;font-size: 3.5vmin;font-family: 'Cairo', sans-serif;text-ali&n: center;font-wei&ht: bold;mar&in: auto;" dir="rtl"&&t;
price
</p&&t;
<p id="total1" style="color: black;font-size: 3vw;font-family: 'Cairo', sans-serif;text-ali&n: center;font-wei&ht: bold;mar&in: auto" dir="rtl"&&t;
#{coinsBean.selectedCountryVo.selectedGameVo.selectedOperatorGamePacka&eVo.price}
</p&&t;
</h:panelGrid&&t;
</h:panelGrid&&t;
как только я нажимаю на вышеупомянутую!
Ответ №1:
Решение
Невозможно добавить ajax в h:panelGrid
(см. Объяснение, чтобы понять, почему).
Вероятно, лучшим способом для этого было бы использование h:commandScript
(начиная с JSF 2.3).
Просто добавьте это куда-нибудь на свою страницу:
<h:form&&t;
<h:commandScript name="someFunction" render="totalSelected" /&&t;
</h:form&&t;
Теперь, когда вы хотите обновить panelGrid, просто выполните someFunction()
.
В вашем случае добавьте это в свою panelGrid, которая должна обновить другую:
<h:panelGrid ... onclick="someFunction();"&&t;
...
</h:panelGrid&&t;
Можно также использовать css (плохой взлом), чтобы растянуть h:commandLink
, чтобы вместить всю panelGrid (я могу добавить это по запросу).
Объяснение
По сути, каждый компонент ( h:panelGrid
, h:commandLink
и т.д.), Который вы можете использовать, является классом java. Но не каждый может / должен делать то же самое. Если вы хотите использовать поведение ajax с компонентом, этот конкретный компонент должен реализовывать ClientBehaviourHolder
интерфейс. Это зарезервировано для компонентов действия, таких как h:commandButton
, h:inputText
, h:commandScript
и т.д. . h:panelGrid
Этот интерфейс не реализован.