मैं इन दिनों जेएसएफ + फेसलेट्स के बारे में काम कर रहा हूं और सीख रहा हूं। मेरे पास बैकिंगबीन और फेसलेट एक्सएचटीएमएल पेज है। जब मैं फेसलेट पेज (केवल एक बार) का अनुरोध करता हूं तो बैकिंग-बीन-विधि को कई बार कहा जाता है।फेसलेट का अनुरोध करते समय बैकिंगबीन विधि को कई बार क्यों कहा जाता है?
इसका कारण क्या हो सकता है?
मैं कुछ खास नहीं देख सकता। अग्रिम में धन्यवाद। यहाँ
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<ui:composition template="index.xhtml">
<ui:define name="content">
<h:form>Name: <h:inputText id="nameFilterPattern" value="#{kundenBackingBean.nameFilterPattern}" /><h:commandButton value="Suchen"/></h:form>
<h:dataTable var="kunde" value="#{kundenBackingBean.kunden}" rowClasses="rowHighlight, rowOrdinary">
<h:column>
<f:facet name="header">
<h:outputText value="Kundennr" />
</f:facet>
<h:outputText value="#{kunde.kundenNr}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{kunde.name}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Vorname" />
</f:facet>
<h:outputText value="#{kunde.vorname}"/>
</h:column>
<h:column>
<h:outputLink>Details</h:outputLink>
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
</body>
</html>
और समर्थन बीन है:
यहाँ facelet है। विधि getKunden कई बार कहा जाता है:
@ManagedBean
@SessionScoped
public class KundenBackingBean extends AbstractBackingBean {
private String nameFilterPattern;
public List<Kunde> getKunden(){
System.out.println("getKunden");
return getApplication().getKunden(getNameFilterPattern());
}
public String getNameFilterPattern() {
return nameFilterPattern;
}
public void setNameFilterPattern(String nameFilterPattern) {
System.out.println("Name filter: " + nameFilterPattern);
this.nameFilterPattern = nameFilterPattern;
}
}
क्या इसे हमेशा एक ही संख्या कहा जाता है? – volvox
क्या आप कई बार बुलाए गए तरीकों को सत्यापित करने के लिए अपने आईडीई डीबग मोड का उपयोग करते हैं या आप इसे लॉग में देखते हैं? – Roman
ऐसा लगता है कि पहले अनुरोध पर इसे 8 बार कहा जाता है और इसके बाद इसे 21 बार कहा जाता है।मैं ग्रहण + ग्लासफ़िश का उपयोग करता हूं और इसे डीबग मोड में शुरू करता हूं। मैंने बस विधि में एक sysout डाला और कंसोल आउटपुट गिना। – c0d3x