Is there a fix to the below error. When i click the command button it calls the java script to set the values for topic_body,topic_url and submit the values to a method in server by the commandbutton. I am not sure what was need to be corrected to stop the error.
XHTML
<h:form prependId="false" id="testForm">
<h:inputHidden value="#{topicBean.topicVO.body}" id="topic_body">
</h:inputHidden>
<h:inputHidden value="#{topicBean.topicVO.videoAudioUrl}" id="topic_vaurl" >
</h:inputHidden>
<h:inputHidden value="#{topicBean.topic_guid}" id="topic_guid">
</h:inputHidden>
<p:commandButton id="shareeButton" action="#{topicController.createTopic}" onclick="javascript:renderElement();">
Share
<f:ajax execute="@form" render="@form"></f:ajax>
</p:commandButton>
</h:form>
Javascript
function renderElement(){
var textarea_content = $('textarea#wall').val();
$('#topic_body').val(textarea_content);
if (textarea_content != '') {
var sitetitle = $('label.title').html();
if (sitetitle == null) {
sitetitle = ' ';
}
.......
......
..
}
JSF Bean
@ManagedBean(name = "topicBean")
@SessionScoped
public class TopicBean extends BaseMB implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private final static Logger logger = Logger.getLogger(CircleBean.class.toString());
private TopicVO topicVO = new TopicVO();
private long topic_guid =0;
public TopicBean(){
logger.info("****************************Start TopicBean Constructor****************************************");
logger.info("****************************End TopicBean Constructor****************************************");
}
JSF Method
@ManagedBean(name = "topicController")
@RequestScoped
public class TopicController extends BaseMB implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private final static Logger logger = Logger
.getLogger(CircleController.class.toString());
TopicBean topicBean;
public void createTopic(){
logger.info("*******************Inside creatTopic********************");
topicBean = (TopicBean) FacesUtils.getManagedBean("topicBean");
ITopicService topicService = (ITopicService) ServiceLocator
.getService("TOPICSERVICE");
topicBean.setTopic_guid(topicService.createTopic(topicBean.getTopicVO(), userSession));
logger.info("*******************Inside creatTopic********************");
}
ERROR
14:44:20,335 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/emyed-web].[Faces Servlet]] (http--127.0.0.1-8080-3) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
at com.sun.faces.mgbean.BeanManager$ScopeManager$SessionScopeHandler.handle(BeanManager.java:575) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.mgbean.BeanManager$ScopeManager.pushToScope(BeanManager.java:458) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:410) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.zreflect.emyed.filter.EmyEdAccessFilter.hasLoggedIn(EmyEdAccessFilter.java:113) [emyed-ui-1.0.jar:]
at com.zreflect.emyed.filter.EmyEdAccessFilter.doFilter(EmyEdAccessFilter.java:84) [emyed-ui-1.0.jar:]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:897) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:626) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2039) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_25]
enter code here
According to the stacktrace,
you’ve a
FilterclassEmyEdAccessFilterwhich is trying to resolve a JSF-specific EL expression usingValueExpression, most likely with the sole purpose to find a session scoped JSF managed bean or its property which should represent the logged-in user. But this EL resolving failed because there’s no means of aFacesContextinside a servlet filter. TheFacesContextis supposed to be created by theFacesServlet, but at the moment the filter runs, theFacesServlethasn’t run at all and thus theFacesContext.getCurrentInstance()returnsnulland thus your code breaks.All with all, this is not the right way to check a session scoped JSF managed bean in a filter.
Under JSF’s covers, session scoped managed beans are stored as attributes of the
HttpSessionwith the managed bean name as session attribute name. You can just access them "the usual way" as session attributes in a servlet filter. E.g.Where
UserManagerrepresents your session scoped JSF managed bean.See also: