标签: managed-bean

检索JSF Managed Bean中的Web应用程序根路径

我试图访问jsf托管bean中的示例/ web文件夹(见图中的下图),但似乎无法找到一种方法来实现它

我试图访问jsf托管bean中的**example/web**文件夹(见图中的下图),但似乎找不到办法

谢谢

java jsf managed-bean

9
推荐指数
2
解决办法
4万
查看次数

将JSF托管bean迁移到CDI托管bean

我打算将Web应用程序从使用JSF托管bean转换为使用CDI托管bean.我知道我需要在下面做:

  1. 在WEB-INF中添加一个空的beans.xml文件.
  2. 将所有JSF @ManagedBean替换为CDI @Named注释.
  3. 用CDI或OmniFaces范围注释替换所有JSF范围注释.
  4. 用CDI @Inject注释替换所有JSF @ManagedProperty.

是这一切都需要做吗?我需要注意哪些问题?

migration cdi jsf-2 managed-bean omnifaces

9
推荐指数
1
解决办法
1506
查看次数

@ViewScoped @ManagedBean中的@EJB导致java.io.NotSerializableException

在@ViewScoped托管bean中读过@EJB会导致java.io.NotSerializableException,但是我的状态保存设置是server.

这是我有的:

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>sispra</display-name>
    <welcome-file-list>
        <welcome-file>index.jsf</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>
    <context-param>
        <param-name>facelets.BUILD_BEFORE_RESTORE</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>glass-x</param-value>
    </context-param> …
Run Code Online (Sandbox Code Playgroud)

serialization ejb myfaces jsf-2 managed-bean

8
推荐指数
2
解决办法
6371
查看次数

Java单例类与JSF应用程序范围内的托管bean - 差异?

使用单例类和应用程序范围的托管bean来保存应用程序数据有区别吗?

我需要查找某些JNDI资源,例如远程bean接口,因此我自己写了一个单例来缓存我的引用,只允许单引用.(服务定位)

我在两个不同的浏览器中打开了我的网站,而且这个单例只被初始化了一次.所以我假设它的应用范围?

应用程序范围托管bean的任何其他好处,然后能够访问其在jsf中的属性?

jsf singleton managed-bean

8
推荐指数
1
解决办法
8597
查看次数

在提交响应后无法创建会话

我在应用程序启动页面加载时收到以下错误:

 SEVERE: Error Rendering View[/HomeTemplate/equityVolume.xhtml]
javax.el.ELException: /HomeTemplate/equityVolume.xhtml @70,78 value="#{equityBean.scripList}": java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed...

    Caused by: java.lang.IllegalStateException: PWC3999: Cannot create a session after the response has been committed...
Run Code Online (Sandbox Code Playgroud)

当我将css应用到我的主页时出现此错误,当我删除css模板时错误消失(但我想填写css模板)以下是导致错误的bean代码片段(通过调试找到)

public List<MasterScrip> getScripList() {
   HttpServletRequest req=(HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); //error line
   HttpSession session=req.getSession();
   type=(String)session.getAttribute("type");...
Run Code Online (Sandbox Code Playgroud)

xhtml代码:

<h:body>
    <ui:composition template="commonClientLayout.xhtml">

    <ui:define name="contentFile">
            <div id="content">
    <h:form id="frm">...
Run Code Online (Sandbox Code Playgroud)

当我删除ui:组合并定义标签(即如果我不应用css),那么我不会得到这个错误.什么可能导致这个错误,我该如何解决?

编辑:

    @PostConstruct
void initialiseSession() {
    if(type!=null)
      {
       if(type.equalsIgnoreCase("losers"))
       {
        scripList=new ArrayList<MasterScrip> ();
        scripList=getScripByPriceLosers(exchange);
       // return scripList;
       }
       else if(type.equalsIgnoreCase("gainers"))
       {
        scripList=new ArrayList<MasterScrip> …
Run Code Online (Sandbox Code Playgroud)

java session jsf java-ee managed-bean

8
推荐指数
1
解决办法
3万
查看次数

如何在另一个托管bean中访问一个托管bean的属性

我有一个托管bean(SessionScope如下)

@ManagedBean(name="login")
@SessionScoped
public class Login implements Serializable {

   private String userSession;
   public Login(){
   }
}
Run Code Online (Sandbox Code Playgroud)

在此managedbean中,在登录功能的某处,我将电子邮件存储为会话.

我有另一个名为ChangePassword(ViewScoped)的托管bean.我需要访问存储在userSession中的电子邮件的值.

这样做的原因是我需要在完成更改密码功能之前找出当前的userSession(电子邮件).(需要更改该特定电子邮件的密码)

我怎么做的?JSF的新手,感谢任何帮助!

jsf parameter-passing jsf-2 managed-bean

8
推荐指数
1
解决办法
3万
查看次数

JavaBean和ManagedBean之间有什么区别

我正在阅读Stackoverflow中的一篇旧帖子,内容如下:

In the big architectural picture, your own JSF code is the V:

M - Business domain/Service layer (e.g. EJB/JPA/DAO)
V - Your JSF code
C - FacesServlet

In the smaller developer picture, the architectural V is in turn dividable as follows:

M - Entity
V - JSP/XHTML page
C - Managed bean

So it's basically a M(MVC)C.
Run Code Online (Sandbox Code Playgroud)

在大写的情况下,JavaBean是一个模型,

但是在小写的情况下,Managed bean会变成一个控制器吗?

他们不是一回事> ?? 差异是什么?

java jsp javabeans managed-bean

8
推荐指数
1
解决办法
5051
查看次数

UnserializableDependencyException:WELD-001413:bean声明了一个钝化作用域,但具有非钝化能力的依赖性

我有以下CDI托管bean:

@Named
@SessionScoped
public class InfoPageController implements Serializable {

    @Inject
    private InfoPageMapper mapper;

}
Run Code Online (Sandbox Code Playgroud)

它在部署到GlassFish 4.1期间抛出以下异常:

Exception while loading the app : CDI deployment failure:WELD-001413: The bean Managed Bean [class de.triaconsulting.cashyourgame.fe.controller.InfoPageController] with qualifiers [@Default @Any @Named] declares a passivating scope but has a non-passivation-capable dependency Managed Bean [class de.triaconsulting.cashyourgame.fe.mapper.InfoPageMapper] with qualifiers [@Any @Default]
org.jboss.weld.exceptions.UnserializableDependencyException: WELD-001413: The bean Managed Bean [class de.triaconsulting.cashyourgame.fe.controller.InfoPageController] with qualifiers [@Default @Any @Named] declares a passivating scope but has a non-passivation-capable dependency Managed Bean [class de.triaconsulting.cashyourgame.fe.mapper.InfoPageMapper] with …
Run Code Online (Sandbox Code Playgroud)

jsf cdi managed-bean

8
推荐指数
1
解决办法
7437
查看次数

需要事务才能执行此操作(使用事务或扩展持久性上下文)

我正在使用Wildfly 10.0.0 Final,Java EE7,Maven和JPA 2.1.当我查询我的数据库中的记录时,它工作正常并列出了员工,但是当我试图坚持一个新员工时,它给了我以下异常:

javax.servlet.ServletException: WFLYJPA0060: Transaction is required to perform this operation (either use a transaction or extended persistence context)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
...
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用JSF和CDI bean来实现它.我有一个JTA数据源,我在persistence.xml文件中配置了它:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
    <persistence-unit name="MyPersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>java:/EmployeesDS</jta-data-source>
        <class>com.home.entity.Employee</class>
        <properties>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        </properties>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

CDI bean可以在下面看到.它相对简单,有一种方法可以列出25名员工,另一种方法可以保留特定员工:

@Named
@RequestScoped
public class DataFetchBean {
    @PersistenceContext
    EntityManager em;

    public List getEmployees() {
        Query query = …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa java-ee cdi managed-bean

8
推荐指数
2
解决办法
2万
查看次数

CDI中@ManagedBean(eager = true)的等价物是什么

众所周知,建议使用注释javax.enterprise.context而不是javax.faces.bean它们被弃用.

我们都发现eager="true"带有@ApplicationScoped from javax.faces.bean和带有@PostConstruct方法的ManagedBeans 对于Web应用程序初始化非常有用,例如:从文件系统读取属性,初始化数据库连接等等...

示例:

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.annotation.PostConstruct;

@ApplicationScoped
@ManagedBean(eager=true)
public class someBean{

    @PostConstruct
    public void init(){
        //Do all needed application initialization.
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果我使用注释,我怎么能得到相同的行为javax.enterprise.context.

注意: @Startup注释fromjavax.ejb将有助于运行该代码,但仅在应用程序服务器启动时部署webapp时.

jsf java-ee eager-loading cdi managed-bean

8
推荐指数
1
解决办法
4274
查看次数