Ogromne dzięki za odpowiedź dzięki temu szybko przepisałem aplikacje z JSP na JSF i zdecydowanie lepiej to wygląda.
Jeśli jeszcze nie wyczerpałem twojej cierpliwości to zapytam czy kiedykolwiek spotkałeś się z czymś takim (bo po kilku godzinnej walki nie moge znaleźć sposobu na usunięcie problemu):
Tworze klasę dziedziczącą po "HttpServlet" i chce dostać się do zdeklarowanych zmiennych przez getInitParameterNames() i w tedy dostaje wyjątek iż ServletConfig nie został zainicjalizowany. Jeśli w konstruktorze dodam linie super.init(); nic się nie zmienia natomiast jeśli do konstruktora dołożę super.init(this); ServletConfig inicjalizuje się ale wywołanie getInitParameterNames() rzuca błędami
javax.el.ELException: /welcomeICEfaces.xhtml @30,58 value="#{master.init1}": java.lang.StackOverflowError
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:107)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
at javax.faces.component.UIOutput.getValue(UIOutput.java:168)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:338)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at org.icefaces.impl.renderkit.RendererWrapper.encodeChildren(RendererWrapper.java:54)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:273)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
....(+ 600-700 linii błędów)
package MasterM;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author orim
*/
public class MasterMind extends HttpServlet {
private HttpServletRequest request;
private HttpServletResponse response;
public String getInit() {
try {
super.init(this);
} catch (ServletException ex) {
Logger.getLogger(MasterMind.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.print(" getServletConfig()" + getServletConfig()); // jeśli nie ma super.init(this); lub zamienie to na super.init();
//getServletConfig() = null
System.out.print(getInitParameterNames());
return null;
}
}