在jsf中使用hidden不像在传统jsp中使用那样直接,无法给inputHidden 组件赋值
<h:inputHidden value="#{EquipmentBB.equipment.createUserId}"/>
只能将值保存到页面然后再提及回去,没法改变hidden的值。如果想在页面中给EquipmentBB.equipment.createUserId设置个特定的值或者将别的表达式赋值给该hidden都是是无法实现的。
我们想到的办法是扩展hidden组件,增加属性。
<wf:inputHidden value="#{equipment.createUserId}" hiddenValue="#{equipment.createOrg+22}">
通过hiddenValue属性给hidden赋值, hiddenValue="#{30}"也可以。让hiddenValue属性在更新值模型阶段起作用,前几个阶段不用管。
代码如下,重写updateModel方法即可。只关注黑体部分,其余都是从父类拷贝的。
public class ProcessInputHidden extends HtmlInputHidden{
@Override
public void updateModel(FacesContext context) {
if (context == null) {
throw new NullPointerException();
}
if (!isValid() || !isLocalValueSet()) {
return;
}
ValueExpression ve = getValueExpression("value");
ValueExpression hnve = getValueExpression("hiddenValue");
if (ve != null) {
try {
if (hnve != null) {
ve.setValue(context.getELContext(), hnve.getValue(context
.getELContext()));
} else {
ve.setValue(context.getELContext(), getLocalValue());
}
setValue(null);
setLocalValueSet(false);
return;
} catch (ELException e) {
String messageStr = e.getMessage();
Throwable result = e.getCause();
while (null != result
&& result.getClass()
.isAssignableFrom(ELException.class)) {
messageStr = result.getMessage();
result = result.getCause();
}
FacesMessage message;
// if (null == messageStr) {
// message = MessageFactory.getMessage(context,
// UPDATE_MESSAGE_ID, MessageFactory.getLabel(context,
// this));
// } else {
// message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
// messageStr, messageStr);
// }
// context.addMessage(getClientId(context), message);
setValid(false);
} catch (IllegalArgumentException e) {
// FacesMessage message = MessageFactory.getMessage(context,
// UPDATE_MESSAGE_ID, MessageFactory.getLabel(context,
// this));
// context.addMessage(getClientId(context), null);
setValid(false);
} catch (Exception e) {
// FacesMessage message = MessageFactory.getMessage(context,
// UPDATE_MESSAGE_ID, MessageFactory.getLabel(context,
// this));
// context.addMessage(getClientId(context), message);
setValid(false);
}
}
}
在设置值模型前先看看有没有hiddenValue属性,如果有就将hiddenValue的值设置进去即可。
如果使用了faceslet页面上直接加hiddenValue属性即可,不需要要给tag增加对应属性。
注:尽量将hidden放到其他输入域组件的后面,这样如果hiddenValue关联的是其他输入域就能取得正确的值了。
分享到:
相关推荐
2. **组件库**:JSF包含一系列可重用的UI组件,如按钮、输入字段、表格等,这些组件可以方便地在页面上进行布局和组合。例如,`h:inputText`用于创建文本输入字段,`h:commandButton`则用于创建交互按钮。 3. **...
2. **JSF组件**:JSF的核心是UI组件库,如`h:inputText`用于输入文本,`h:commandButton`用于提交表单等。这些组件可以直接在JSP或Facelets页面中使用,简化了前端开发。 3. **登录与注册**:登录注册功能通常包括...
在“第1部分-增强JSF页面的外观”中,可能涵盖了如何将CSS规则集成到JSF项目中,以及如何有效地组织CSS代码以保持可维护性。 接着,JavaScript作为客户端脚本语言,为网页添加动态功能,使用户能够与页面进行交互。...
**EL (Expression Language)** 用于在JSF视图(HTML页面)中访问和操作Managed Bean的属性。例如,`#{cartBean.itemCount}` 将显示`CartBean`中的`itemCount`属性值。 在处理用户交互时,JSF遵循其特定的**生命周期...
JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam
在JSF中,用户登录界面是常见的功能模块,用于验证用户的身份。下面将详细讲解如何在JSF中创建一个用户登录界面。 1. **JSF架构简述** JSF是一种组件化的MVC(Model-View-Controller)框架,它提供了丰富的UI组件...
7. **jsf实例**:在实际应用中,JSF实例通常指的是一个运行时的JSF应用程序,它包含了配置、组件、Managed Beans以及它们之间的交互。 在“Login”示例中,我们可能看到以下代码片段: ```xml <!-- login.xhtml --...
在JSF中,事件处理通常通过监听器(Listeners)和处理器(Action Methods)完成,这些可以在管理Bean中定义。监听器用于响应特定类型的事件,而处理器方法则执行与事件相关的操作。 ### JSF配置与导航 为了配置JSF...
这种方式同样限制了只能传递字符串,且需要在JSP页面上添加对应的隐藏输入字段`<h:inputHidden>`。 3. **使用 Request Beans 共享数据**: 为了在多个页面之间传递更复杂的数据,可以创建一个独立的Request Bean...
jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF
在JSF页面中,可以利用`<h:outputLink>`组件结合JSP页面来实现文件下载。`<h:outputLink>`的`value`属性指向JSP页面,通过传递参数(如`filename`)来指定要下载的文件。JSP页面接收这些参数并调用下载方法。 总之...
具体集成步骤包括:引入Tiles的依赖库,配置`web.xml`以启用Tiles,编写Tiles的定义文件(如`tiles-defs.xml`),然后在JSF页面中引用Tiles组件。通过这种方式,开发者可以创建可复用的页面片段,并在多个JSF视图...
在JSF(JavaServer Faces)页面上实现一个客服浮动窗口是一项常见的需求,它能为用户提供实时的在线支持,增强用户体验。下面将详细讲解如何利用JSF技术和相关工具来创建这样一个功能。 首先,我们需要理解JSF的...
2. **JSF标签**:JSF的UI组件是以标签的形式在JSP页面中使用的,这些标签对应于服务器端的组件。学习JSF标签,你需要理解每个标签的用途,如`h:inputText`用于文本输入,`h:commandButton`用于触发动作,以及如何...
1. **JSF组件**:JSF提供了一系列预定义的UI组件,如输入字段、按钮、表单等,这些组件可以方便地在页面上布局并处理用户交互。在这个登录项目中,可能会用到`h:inputText`(用于用户名和密码输入)、`h:...
这些组件可以通过属性和绑定来配置,允许开发者在页面上动态地创建和操作用户界面。 **事件处理**:JSF支持事件处理机制,允许组件之间通信。当用户触发一个事件(如点击按钮),对应的事件处理器会被调用,这使得...
这些组件可以通过XML(Faces配置文件)或者在JSP页面上直接声明。例如,`<h:inputText>`用于创建文本输入字段,`<h:commandButton>`用于创建提交按钮。组件间可以通过`f:ajax`标签实现异步更新,提高用户体验。 ###...
在JavaServer Faces (JSF)框架中,分页是一种常用的技术,用于处理大量数据时提供更好的用户体验。当数据集过大,一次性加载所有记录到页面上会导致性能下降且用户界面响应变慢。通过分页,我们可以将数据分成多个...
对于初学者,首先需要理解JSF的基本原理和组件体系,如`h:inputText`、`h:commandButton`等。然后,学习如何创建JSF页面,处理用户输入,以及如何与后台Bean进行数据绑定。IBM的文档通常会详细解释如何在WebSphere...
JSF的导航规则可以在faces-config.xml文件中定义,根据登录结果控制页面跳转。 6. **会话管理**:为了保持用户状态,登录信息通常会被存储在HTTP会话中。一旦用户验证成功,一个会话对象就会被创建,并保存用户的...