не работает при использовании
Я хотел бы создать экран master-detail с параметрами request и requestscoped beans, но парам view не заполняется.
Ссылка, которая вызывает перенаправление:
<h:form>
<p:dataTable var="visit" value="#{visitBean.findAllVisits()}">
<p:column headerText="mdh">
<p:commandLink action="#{visitDetailBean.seeVisitDetails(visit)}">
<h:graphicImage library="images" name="details.png"/>
</p:commandLink>
</p:column>
....
Стоящий за этим метод:
public String seeVisitDetails(Visit visit) throws IOException {
return "/pages/mdh-details.xhtml?visitId=" + visit.getId()+ ";faces-redirect=true";
}
Подробная страница xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<f:metadata>
<f:viewParam name="visitId" value="#{visitDetailBean.currentVisitId}" />
</f:metadata>
<ui:composition template="/templates/masterLayout.xhtml">
<ui:define name="content">
<h:outputText value="#{visitDetailBean.currentVisit.name}"/>
test
</ui:define>
</ui:composition>
И последние подробности Боба:
private long currentVisitId;
public void setCurrentVisitId(long currentVisitId) {
this.currentVisitId = currentVisitId;
}
public long getCurrentVisitId() {
return currentVisitId;
}
public Visit getCurrentVisit() {
return visitService.findVisit(currentVisitId);
}
CurrentVisitId всегда равен 0.. Я действительно не могу его найти.
1 ответ:
При использовании шаблонов все, что находится за пределами
<ui:composition>
и<ui:define>
, игнорируется . Это включает в себя<f:metadata>
.Переместите его внутрь
<ui:define>
из<ui:composition>
.Например
<ui:composition template="/templates/masterLayout.xhtml"> <ui:define name="metadata"> <f:metadata> <f:viewParam ... /> </f:metadata> </ui:define> <ui:define name="content"> ... </ui:define> </ui:composition>
См. также:
Не связанный с конкретной проблемой, вам лучше поместить
masterLayout.xhtml
в папку/WEB-INF
, чтобы предотвратить прямой доступ.<ui:composition template="/WEB-INF/templates/masterLayout.xhtml">
См. также: