<p:inputText id="id" value="#{bean.id}">
我的托管bean
private String id;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
#{}
表达式调用getter和setter方法不是JSF的一部分,而是表达式语言(最常见的是EL)的一部分。JSF利用EL通过适当的getter和setter将HTML组件的数据绑定到bean的字段。这是:
中的所有组件,如果是ajax请求,您可以声明要发送到服务器的组件)将包含一个新值,并且该值将使用正确的setter方法设置为字段。例如,您有一个SayHelloBean
,它属于请求范围:
@RequestScoped
@ManagedBean
public class LoginBean {
private String name;
//proper getter
public String getName() {
return this.name;
}
//proper setter
public void setName(String name) {
this.name = name;
}
}
<h:form>
Please tell me your name
<h:inputText value="#{loginBean.name}" />
<h:commandButton action="page2" />
</h:form>
page2.xhtml:
Hello #{loginBean.name}
这就是幕后发生的事情:
>
加载page1.xhtml时,JSF将创建loginbean
的新实例,我们可以称之为loginbean
,并将其注册到JSP请求范围中。由于
的值绑定到loginbean#name
(作为loginbean
类的字段name
读取),因此EL将显示loginbean#name
的值(作为实例loginbean
的字段name
读取),并且由于该值未初始化,EL将以空字符串的形式显示null
。
最后,JSF将确保通过forward导航到page2.xhtml,在处理它时,它将找到#{loginbean.name}
,EL将检查loginbean2#name
的值并替换它。
这里解释的步骤只是对JSF生命周期以及JSF如何使用getter和setter的一个非常小的解释(还有很多元素没有解释)。
更多信息:
问题内容: 我是JSF的新手(2)。 在Struts中,我们可以从类似的URL调用动作。这将调用一个操作并返回一个结果页面,例如JSP(最初没有JSP / HTML)。 在JSF中如何做同样的事情?(我知道如何从.xhtml调用操作),即直接从URL调用托管bean并获取结果页面。 问题答案: 您要询问的模式并不是JSF工作方式的真正本机。 像Struts和Spring MVC这样的基于请求的框架
注意:这个问题可能与Vaadin有关,也可能与Vaadin无关,这取决于是否有“更好的”解决方案来“重置”bean。 背景场景 我正在构建一个用于输入一些值的向导,当这些值完成时,将发送到一个表(使用Vaadin和加载项“Wizards for Vaadin”)。 该加载项没有提供一种方法来重置向导(即返回到步骤1)而不强制调用当前steps(重写)onAdvance()和onBack()方法,这
托管bean它是一个纯Java类,它包含一组属性和一组,方法。 以下是托管bean方法执行的常见功能: 验证组件的数据 处理组件触发的事件 执行处理以确定应用程序必须导航的下一页 它也可以作为JFS框架的模型。 JSF托管Bean示例 请看看下面一段示例代码 - 您可以通过以下方式使用此。 通过配置成XML文件。 通过使用注释。 通过XML文件配置托管Bean 在xml文件配置是比较旧方法。 在这
主要内容:使用XML配置,使用@ManagedBean注解JSF 托管bean(Managed Bean)是JSF注册的常规Java Bean类。托管bean包含getter和setter方法,业务逻辑。JSF托管bean作为UI组件的Model。 它存储JSF xhtml页面使用的数据。借助JSF框架,可以从JSF页面访问托管Bean。 在JSF 1.2中,我们必须在JSF配置文件(如)中注册受管理的bean。 从JSF 2.0可以使用注解注册管理be
我正计划将一个web应用程序从使用JSF托管bean转换为使用CDI托管bean。我知道我需要做以下工作: 在WEB-INF中添加空beans.xml文件。 将所有JSF@ManagedBean替换为CDI@Named Annotations。 用CDI或OmniFaces作用域注释替换所有JSF作用域注释。 将所有JSF@ManagedProperty替换为CDI@Inject Annotati
我有一个自己初始化的bean,我想让这个方法变成事务性的。 使用这种方法,可以在中工作,但是仍然不能工作,但是如果我使用spring托管bean,事务可以工作,回滚和数据库锁定都可以工作。