JSF 2.0 (mojarra) 응용 프로그램.JSF2 양식을 제출해도 동일한 페이지에 모음이 다시로드되지 않습니다.
이<h:dataTable id="manualTitlesForm" value="#{titlesBean.manualTitles}" var="title" border="1" cellspacing="0">
<h:column>
<f:facet name="header">#{msg['heaading']}</f:facet>
#{title.heading}
</h:column>
...
<h:column>
<f:facet name="header">#{msg['actions']}</f:facet>
<h:form>
<h:commandButton action="#{titlesBean.editManualTitle(title)}" value="#{msg['g.edit']}" />
<h:commandButton action="#{titlesBean.deleteManualTitle(title.id)}" value="#{msg['g.delete']}" />
</h:form>
</h:column>
</h:dataTable>
빈 코드의 코드는 매우 간단하다 : 나는
<h:form>
#{msg['add custom title']}:<br />
<table>
<tr>
<td>#{msg['heaading']}:</td>
<td><h:inputText value="#{titlesBean.title.heading}"></h:inputText></td>
</tr>
<tr>
...
</tr>
</table>
<h:commandButton action="#{titlesBean.addTitle}" value="#{msg['g.save']}" />
</h:form>
그리고 이미 추가 된 모든 항목의 목록을 같은 페이지에 항목을 추가하는 아주 사소한 양식을 가지고 :
@Controller
@Scope(Scopes.REQUEST)
public class TitlesBean {
private List<JTitle> manualTitles;
@PostConstruct
private void init() {
this.manualTitles = titlesManager.getManualTitles();
}
public String addTitle() {
title.setCreated(new Date());
title.setManual(true);
try {
titlesManager.addTitle(title);
title = new JTitle();// this is added, delete from the variable. only if no exception though !!!
UserMessagesBean.addMessage("saved");
} catch (Exception e) {
UserMessagesBean.setValidationException(e.getMessage());//different exception added
}
return null;
}
public List<JTitle> getManualTitles() {
return manualTitles;
}
}
이제 문제는 getManualTitles()
대신 하나, 예를 들어 DB에 12 개 통화를 야기 내가 가진 타이틀의 수만큼이라는 점이다. 왜 이런 일이 내 이해를 넘어서는 것일까 요? 빈의 매뉴얼 제목을 캐싱하여이 문제를 해결할 수 있습니다. 이것은 나의 주요 문제가 아니다.
문제는 addTitle()
은 AFTER getManualTitles()
입니다. 실제로 getManualTitles()
이 예를 들어 10 번 호출되고 addTitle()
이 호출 된 다음 두 번 더 getManualTitles()
메서드가 호출됩니다. 이것은 내 페이지가 13 대신 12 개의 이전 레코드 만 표시하도록하는 일종의 병렬 실행이라고 생각하게 만듭니다. 페이지를 다시로드해야만 13이 표시됩니다.
업데이트 : 이제 목록을 캐시합니다. 문제가 해결되지 않았습니다.
왜? 이 문제를 어떻게 해결할 수 있습니까?
가능한 중복 [시간에서 데이터 테이블에서 업데이트 백업 콩 :있는 명령 및 JPA (http://stackoverflow.com/questions/7221758/update-backing-bean-in-datatable from hcommandbutton-and-jpa) – BalusC
이것은 데이터베이스에 대한 여러 호출의 질문에 대한 대답이지만 어떻게하면 내 주요 문제를 해결할 수 있습니까? – mist
이것은 답변의 코드 예제에서도 다룹니다. – BalusC