eav
eav

Reputation: 2171

JSF 2 AJAX - reload whole div (e.g. <ui:include src="toReloadData.xhtml" />)

I'm working with jsf2 and want to use the ajax-functionality of it. Problem: I've already seen some ajax refresh things. But nothing to refresh a whole div...

I have a xhtml page with data from my bean, and i don't really want to refresh all fields of it, it would be easier to refresh the whole ui:include...

does anybody knows a solution? Or do I have to refresh all fields manually?

best regards

Upvotes: 5

Views: 13923

Answers (2)

eav
eav

Reputation: 2171

Okay BalusC, but I'm still having a problem with the includes and ajax. my index.xhtml includes a search.xhtml and a results.xhtml the ajax-part is in search.xhtml and the toRender-id is in results.xhtml... so at rendering the jsf-tags there's the problem that there's no toRender-Id at this time...

EDIT: Okay the problem was not the arrangement of the includes, it was that the ajax-parts must be in the same form tag like this:

<h:form>
  <div id="search" class="search">
    <ui:insert name="search" >
    <ui:include src="search.xhtml" />
    </ui:insert>
  </div>

  <h:panelGroup id="ajaxResult" layout="block"> 
      <ui:insert name="searchResults" >
      <ui:include src="searchResults.xhtml" />
      </ui:insert>
  </h:panelGroup>
</h:form>

search contains f:ajax tag, ajaxResult is toRenderId best regards, emre

Upvotes: 1

BalusC
BalusC

Reputation: 1109810

Just put them in some container component with an ID and use it in render attribute of f:ajax.

<h:form>
    <h:commandButton value="submit" action="#{bean.submit}">
        <f:ajax render=":foo" />
    </h:commandButton>
</h:form>
<h:panelGroup id="foo" layout="block">
    <ui:include src="include.xhtml" />
</h:panelGroup>

Note that <h:panelGroup layout="block"> renders a <div>. If you omit the layout attribute, it defaults to <span> (only whenever there are any attributes which needs to be rendered to HTML, like id).

Upvotes: 10

Related Questions