我目前正在练习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;
}
答案 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" />