相关疑难解决方法(0)

由于CDI/Weld中的@Named,@ ManagedBeans在JavaEE6中是否已过时?

由于CDI(及其实现Weld),JEE6中的每个POJO都可以注释@Named,这使得POJO可以被视图访问.

这是否意味着ManagedBeans现在已经完全过时了?还是我错过了@ManagedBean仍然有意义的东西?

jsf java-ee jsf-2 jboss-weld

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

@PostConstruct中的CDI参数

我认为我的问题与类似,但尚未发现它可行

  <f:metadata>
  <f:viewParam id="id" name="id" value="#{detailsBean.id}"/>
 </f:metadata>
Run Code Online (Sandbox Code Playgroud)

为什么我不能用@Named执行此操作并使用CDI:

@Named
@RequestScoped
public class DetailsBean {

    private Contacts detailsContact;
    @EJB
    ContactsFacade contactsEJB;
    private int id;

    public DetailsBean() {

        System.out.println("details bean called");
    }

    @PostConstruct
    public void onLoad() {
        detailsContact = contactsEJB.find(id);

}
Run Code Online (Sandbox Code Playgroud)

我无法记录身份证.

当然,@ ManagedProperty与CDI不兼容.

*****UPDATE*****

一些xhtml:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="../template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:p="http://primefaces.prime.com.tr/ui"
                xmlns:f="http://java.sun.com/jsf/core">

    <ui:define name="head">
        <f:metadata>               
            <f:viewParam name="paginator" value="#{contactsBean.contactsTablePaginator}"/>
            <f:viewParam name="rows" value="#{contactsBean.contactsTableRows}"/>
        </f:metadata>
    </ui:define>

    <ui:define name="content">
        <p:growl id="growl" showDetail="true"/> …
Run Code Online (Sandbox Code Playgroud)

java ejb-3.0 java-ee-6 jsf-2

2
推荐指数
1
解决办法
4723
查看次数

如何在RequestScoped bean中调用@PostConstruct之前在SessionScoped bean中设置参数值

非常感谢您帮助解决以下问题(JBoss 6.0,Mojarra - 2.2 Snapshot,facelet 1.1和PrimeFaces 3.0.M4:

问题是,在获取值集之前调用请求bean的post构造方法.我们如何确保首先设置会话bean上的参数值,然后调用请求bean的post构造方法.

问题#1:当点击"Next"时,这是一个ajax调用1. testRequestBB的"初始化"post构造方法被调用2. testSessionBB的"next"方法被调用来设置值

预期的行为应该是另一种方式,使用ajax调用在会话bean中设置值,然后应该初始化请求bean.

问题#2:请求bean的"初始化"后构造方法被调用两次.
- 是因为请求bean从基类扩展(尽管基类中没有post构造方法).

当显示test.xhtml页面时,可以采取哪些措施来解决获取post构造方法两次调用的问题?

这是代码:

test.xhtml

<h:dataTable id="testId" emptyMessage="#{messages.noData}" var="test" value="#{testList}">
....
<f:facet name="footer">
    <h:form id="pgId">                  
        <h:commandLink value="#{messages.next} ">
            <f:ajax listener="#{testSessionBB.next}" />
        </h:commandLink>
            .....
    </h:form>
</f:facet>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

TestSessionBB.java

@Named("testSessionBB")
@SessionScoped
public class TestSessionBB implements Serializable
{
    private int testStartRow;
    .....

    public String next() 
    {
        if (this.getTestStartRow() + 5 > 15) // hard coded value for simplicity in this post
        {
            this.setTestStartRow(15);
        } else {
            this.setTestStartRow(this.getTestStartRow() + 5);
        } …
Run Code Online (Sandbox Code Playgroud)

jsf-2

2
推荐指数
1
解决办法
5455
查看次数

标签 统计

jsf-2 ×3

ejb-3.0 ×1

java ×1

java-ee ×1

java-ee-6 ×1

jboss-weld ×1

jsf ×1