EJB / JSF2.0的问题

时间:2011-10-15 22:54:32

标签: jsf-2 ejb

我目前正在练习JSF和EJB,但是现在我无法让页面显示所请求的信息,这里有输入文本和提交按钮(input.xhtml),预期结果是显示提交的文本

/input.xhtml @16,56 value="#{welcome.name}": Target Unreachable, identifier 'welcome' resolved to null

我已经尝试了一切来修复它,这是input.xthml的一部分

        <ui:define name="content">
            <h:form>
                <h:panelGrid columns="3">
                    <h:outputText value="Name:"/>
                    <h:inputText value="#{welcome.name}" title="name" id="name"
                                 required="true" />
                    <h:message for="name" style="color: red"/>
                </h:panelGrid>
                <h:commandButton action="show" value="submit"/>
            </h:form>

        </ui:define>

    </ui:composition>

这是豆。

@ManagedBean
@RequestScoped
public class Welcome {
    private String name;
    private String message;

    public String getMessage() {
        return "Hello " + name;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

2 个答案:

答案 0 :(得分:3)

代码看起来很好,应该可以正常工作。我只是看不出这与JPA和EJB有什么关系。从测试用例中删除JPA / EJB时会出现完全相同的问题,对吧?您可以将这些标签和此详细信息排除在外。

至于具体问题,因为你省略了import声明,我只能猜测你实际上是从javax.annotation package而不是{{{{}}}导入@ManagedBean。 3}}。前者不会让bean由JSF管理,但后者会这样做。检查并修复您的导入。请注意,@RequestScoped也需要来自javax.faces.bean package,而不是来自the same package

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class Welcome {
    // ...
}

答案 1 :(得分:0)

write like this

@ManagedBean(name="welcome")
@RequestScoped
public class welcome implements Serializable {
private String name;
}

In html write like this
<h:inputText value="#{welcome.name}" title="name" id="name"
                                 required="true" />