f: ajax не работает - PullRequest
       2

f: ajax не работает

0 голосов
/ 23 мая 2011

У меня проблемы с получением f:ajax для работы на h:panelGroup. Вот что я делаю:

JSF код:

<h:panelGroup id="contacts_tab_contacts_list_list">
    <h:form>
    <ul>
        <c:forEach items="#{currentDevice.contacts}" var="contact">
            <li>
                <f:ajax event="click" onevent="logcheck()">
                    <h:panelGroup layout="block" 
                                styleclass="contacts_tab_contacts_list_quickview_box"  >
                            <h:outputText value="#{contact.firstName} #{contact.familyName}" />
                    </h:panelGroup>
                </f:ajax> 

                <f:ajax event="click" onevent="logcheck()">
                    <f:param value="#{contact.getUUID}" name="currContactUUID" />
                    <h:commandButton value="#{contact.firstName} #{contact.familyName}" 
                    styleclass="contacts_tab_contacts_list_quickview_box" />
                </f:ajax>
            </li>
        </c:forEach>
    </ul>
    </h:form>
</h:panelGroup>

Как это выглядит на веб-странице: (Игнорировать глупое форматирование :-)) enter image description here

И, наконец, как выглядит источник страницы:

<li>
    Name - 35 Family - 35
    <input 
        id="j_id594943238_6609edf4:j_id594943238_6609ec58" 
        name="j_id594943238_6609edf4:j_id594943238_6609ec58" 
        type="submit" 
        value="Name - 35 Family - 35" 
        onclick=".. removed .." /> 
</li> 

(Обратите внимание, как h:panelgroup был "проглочен" элементом li.)

Я могу нажать h:commandButton, и он работает правильно. Ничего не происходит, когда я нажимаю на текст, и это имеет смысл, потому что, как видно из просмотра источника, h:panelGroup вместе с f:ajax исчезли!

Вот и все. Извините за длину, но я хотел получить все детали. Спасибо за помощь: -)

Ответы [ 2 ]

0 голосов
/ 07 июля 2014

маленький POC для AJAX может быть полезен для других

Этот фрагмент покажет, что мы можем вызывать метод управляемого бина и Ajax вместе, и он работает с использованием JSF2.0

<h:form>     
  <h:inputText id="comments" value="#{photoManagedBean.name}"></h:inputText>

  <h:commandButton value="Comments Input" >
    <f:ajax execute="comments" listener="#{photoManagedBean.saveComments()}" render="displayRecentComments" />

   </h:commandButton>
   <br/>

   <table width="600" border="0"  height="80">
     <td>
       <h:outputText id="displayRecentComments" value="#{photoManagedBean.name}"/>
     </td>
   </table>
 </h:form>

ManagedBean:

public void saveComments() { //ur code//}
0 голосов
/ 23 мая 2011

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

Тогда остается только h:outputText, и этот компонент не реализует интерфейс javax.faces.component.behavior.ClientBehaviorHolder , необходимый для компонента, который получает Аякс прилагается.

Вы можете использовать h:outputLink или, возможно, h:outputLabel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...