少し問題があります。cms からログアウトすると、何らかの方法でパラメーターの 1 つのセッターが呼び出され、アクションが実行されます。http500 になります。
具体的には、次を使用して、jsf ページからバッキング (@RequestScoped) Bean にパラメーターを渡します。
<f:metadata>
<f:viewParam name="activate" value="#{myManagedBean.activate}" />
データベースに変更を加えるセッターを使用します。
public void setActivate(int num) {
ab.changeActiveState("myString", num);
return;
}
logout メソッドは完全に異なる Bean で使用され、単純なメソッドを呼び出します。
public String logout() {
Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletRequest a = (HttpServletRequest) request;
try {
a.logout();
} catch(Exception e) {
logger.info("Error while logout: " + e);
}
return "advert-list.xhtml?faces-redirect=true";
}
ログアウトすると次のエラーがスローされます。
javax.servlet.ServletException: javax.el.ELException: /secure/my-list.xhtml @12,81 value="#{myManagedBean.activate}": javax.ejb.EJBException: javax.persistence.NoResultException: No entity found for query
javax.faces.webapp.FacesServlet.service(FacesServlet.java:321) org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:349)
root cause
javax.faces.component.UpdateModelException: javax.el.ELException: /secure/advert-list.xhtml @12,81 value="#{myManagedBean.activate}": javax.ejb.EJBException:
javax.persistence.NoResultException: No entity found for query
javax.faces.component.UIInput.updateModel(UIInput.java:848)
javax.faces.component.UIViewParameter.updateModel(UIViewParameter.java:284)
javax.faces.component.UIInput.processUpdates(UIInput.java:730)
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1109)
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1109)
javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1218) com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:74)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:349)
何が起こっているのか、なぜなのかわかりません。そのセッターについて - それは正常に動作します。ログアウトについて - 私のプロジェクトの他のページからは何もスローせず、現在のユーザーをログアウトします。