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:
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> <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>
Quando clicco su un pulsante qualsiasi mi appare l'errore: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>
Questo è il codice della clear (le altre 4 operazioni sono simili)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
Ma com'è possibile??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; }
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![]()
![]()

Rispondi quotando
suvvia, era venerdì sera
