작업을 수행 할 수있는 JSF의 기본 구성 요소를 모르지만 가능한 해결 방법을 생각해 볼 수 있습니다.
기본적으로, 당신은 미리 정의 된 id
에 빈 자리가이 AJAX를 <h:commandButton>
의 호출과 HTML DOM 나중에 업데이트 될 때, 자바 스크립트를 통해 내용을 이동을 통해 채울 수있을 수 있습니다. 한 가지 유의 사항 : JSF 구성 요소에 ID를 할당 할 때 <h:dataTable>
또는 <ui:repeat>
과 같은 접근 방식을 어린이의 식별자를 제어하므로 naming containers과 함께 사용하는 것이 좋습니다. 마지막으로 요소에 정의 된 스타일 클래스 만 남겨 둡니다. 기본 예제는 아래에 나와 있습니다.
뷰 :
<h:form id="form">
<h:panelGroup id="basic">
<ul class="basic-list">
<ui:repeat var="data" value="#{bean.basicList}">
<li class="data-class">#{data.value}</li>
<ui:repeat>
</ul>
<h:panelGroup>
<h:panelGroup id="additional">
<ul class="additional-list">
<ui:repeat var="data" value="#{bean.additionalList}">
<li class="data-class">#{data.value}</li>
<ui:repeat>
</ul>
<h:panelGroup>
<h:commandButton value="Load 10 more rows">
<f:ajax render="additional" onevent="replaceData" listener="#{bean.loadAdditionalData}"/>
</h:commandButton>
</h:form>
빈 (bean) :
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
private List<Data> basicList;//getter+setter
private List<Data> additionalList;//getter+setter
@PostConstruct
public void init() {
basicList = new ArrayList<Data>();//populate first rows of data from somewhere
}
public void loadAdditionalData(AjaxBehaviorEvent event) {
additionalList = new ArrayList<Data>();//populate additional rows of data from somewhere
basicList.addAll(additionalList);//just for a possible postback
}
}
자바 스크립트 :
function replaceData(data) {
if(data.status == 'success') {
var toAppend = $('#additional-list').html();
$('#basic-list').append(toAppend);
}
}