我尝试渲染页面,但有些EL表达式可能会产生一些异常。 所以我首先试着用一块< C:如果>以这种方式,它只通过检查临界条件显示代码。 但我看到了#34;错误"我的页面再次被重定向为" HTTP 500 - 内部服务器错误"。 所以我认为可能是在任何情况下计算的块内的EL表达式,如果< C:如果>阻止未显示的地方。所以我用一个< C:捕获>因为我读到这个块将捕获异常。所以我还在声明的所有方法上添加了#34;抛出异常"。 但是,同样,当不满足关键条件时,我的页面将重定向到500错误页面。
我发布了我的XHTML代码:
<c:if test="#{!partyBean.emptySet}">
<c:catch>
<p:panel id="panel" style="margin-bottom:10px;">
<f:facet name="header" >
<h:outputLabel value="#{partyBean.currentparty.name}" />
</f:facet>
<f:facet name="actions">
<p:commandButton id="asktojoin" styleClass="ui-panel-titlebar-icon "
action="#{joinRequestBean.askForParty(partyBean.currentparty)}" value="Ask to Join"/>
</f:facet>
<f:facet name="footer" >
<p:commandButton id="pr" action="#{partyBean.previus()}" value="previousParty" rendered="#{partyBean.hasPrevious()}">
</p:commandButton>
<p:commandButton id="nx" style="margin-right:10px" action="#{partyBean.next()}" value="nextParty" rendered="#{partyBean.hasNext()}">
</p:commandButton>
</f:facet>
<h:panelGrid columns="2">
<h:outputLabel value="Symbol:" />
<h:graphicImage value="#{('/partysymbols/'.concat(partyBean.currentparty.symbol))}" width="200" height="171" />
<h:outputLabel for="program" value="Program:" />
<h:outputLabel id="program" value="#{partyBean.currentparty.program}" />
<h:link id="partyname" outcome="memberlist" value="memberlist">
<f:param name="partyname" value="#{partyBean.currentparty.name}" />
</h:link>
</h:panelGrid>
</p:panel>
</c:catch>
</c:if>
<c:if test="#{partyBean.emptySet}">
<h1>There are no parties at the moment</h1></c:if>
</h:form>
</h:body>
我的豆子:
@ManagedBean(name="partyBean")
@SessionScoped
public class PartyBean {
@EJB
private PartyManagerLocal ejb;
private PartyDTO[] party;
int i=0;
@PostConstruct
private void init() {
i=0;
refresh();
}
private void refresh(){
Object[] list_o = ejb.getListOfParty().toArray();
party = new PartyDTO[list_o.length];
for(int i=0;i<list_o.length;i++){
party[i]=(PartyDTO)list_o[i];
}
if(i>=list_o.length)
i=list_o.length;
}
public boolean isEmptySet() {
refresh();
return party.length==0;
}
public String next() throws Exception{
refresh();
if(i<party.length-1)
i++;
return "partyview.xhtml?faces-redirect=true";
}
public String previus() throws Exception{
refresh();
if(i>0)
i--;
return "partyview.xhtml?faces-redirect=true";
}
public boolean hasPrevious(){
return i>=1;
}
public boolean hasNext(){
return i<party.length-1;
}
public PartyDTO getCurrentparty() throws Exception{
return party[i];
}
}
我很抱歉向你展示了我的整个代码,但我不知道错误在哪里。然后我也为我可怕的代码道歉,但此刻我只需要它可行。
关键条件是我的数组不应为空。可能会发生我的数组将为空但在这种情况下,我需要告知用户有关它,而是重定向到500错误页面。
提前谢谢你, Samuele
答案 0 :(得分:0)
您可以通过围绕panelGroup
中的代码并使用rendered
属性来有条件地封装您想要的内容。
示例强>
<h:panelGroup rendered="#{PartyBean.isEmptySet}">
<!-- Code inside here... -->
<!-- This will render if isEmptySet returns true -->
</h:panelGroup>