Sono sempre infognato nel solito tutorial dell'ibm per le jsf..
Ad un certo punto mentre gestivo la navigazione mi capita un errore che ho esplorato un pò e scremando un pò di roba sono giunto al succo:
Con questo codice funziona normalmente:
codice:
<div>
<h:commandButton action="#{calculatorController.add}" value="Add" />
<h:commandButton action="#{calculatorController.multiply}" value="Multiply" />
<h:commandButton action="#{calculatorController.divide}" value="Divide" />
<h:commandButton action="#{calculatorController.clear}" value="Clear"
immediate="true"/>
</div>
<h:panelGroup binding="#{calculatorController.resultsPanel}" rendered="false">
<h4>Results</h4>
<h:panelGrid columns="1" rowClasses="oddRow, evenRow"
styleClass="resultGrid">
<h:outputText value="First Number #{calculatorController.calculator.firstNumber}"/>
<h:outputText value="Second Number #{calculatorController.calculator.secondNumber}"/>
<h:outputText value="Result #{calculatorController.calculator.result}"/>
</h:panelGrid>
</h:panelGroup>
ma quando tolgo l'ultimo panelgroup lasciando solo:
codice:
<div>
<h:commandButton action="#{calculatorController.add}" value="Add" />
<h:commandButton action="#{calculatorController.multiply}" value="Multiply" />
<h:commandButton action="#{calculatorController.divide}" value="Divide" />
<h:commandButton action="#{calculatorController.clear}" value="Clear"
immediate="true"/>
</div>
Quando clicco su un pulsante qualsiasi mi appare l'errore:
codice:
Error calling action method of component with id calcForm:j_id_jsp_1335438281_13
Caused by:
java.lang.NullPointerException - /pages/calculator.jsp(41,6) '#{calculatorController.clear}' java.lang.NullPointerException
Questo è il codice della clear (le altre 4 operazioni sono simili)
codice:
public String clear() {
FacesContext facesContext = FacesContext.getCurrentInstance();
try {
calculator.clear();
resultsPanel.setRendered(false);
facesContext.addMessage(null, new FacesMessage(
FacesMessage.SEVERITY_INFO, "Results cleared", null));
} catch (Exception ex) {
resultsPanel.setRendered(false);
facesContext.addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), null));
}
return null;
}
Ma com'è possibile??
Il Bean c'è (infatti funziona nel primo caso).. com'è possibile che togliendo quel codice si sputtani così?
Cosa c'è lì dentro di indispensabile?
Scusate il titolo poco tecnico, ma quando accadono queste cose il venerdì sera un pò cadono le