JSF 2.0中的复合组件

从JSF 2.0开始,创建可重用的组件(称为复合组件)非常容易。 在本教程中,我们向您展示如何创建一个简单的复合组件(存储为“ register.xhtml ”),这是一个用户注册表单,包括名称和电子邮件文本字段( h:inputText )和一个提交按钮( h:commandButton )。 此外,我们还将向您展示如何使用它。

创建复合组件

这是创建复合组件的步骤:

1.复合命名空间

创建一个.xhtml文件,并声明复合名称空间。

<html xmlns="http://www.w3.org/1999/xhtml"   
      //...
      xmlns:composite="http://java.sun.com/jsf/composite">
</html>

2.接口与实现

使用复合标签composite:interfacecomposite:attributecomposite:implementation定义复合组件的内容。 例如,

<html xmlns="http://www.w3.org/1999/xhtml"   
      //...
      xmlns:composite="http://java.sun.com/jsf/composite">
	  
	  <composite:interface>
			<composite:attribute name="anything" />
	  </composite:interface>
	  
	  <composite:implementation>
			#{cc.attrs.anything}
	  </composite:implementation>
</html>

composite:interface标记用于声明可配置的值,这些值可公开给使用它的开发人员。 而且composite:implementation标记声明了所有XHTML标记,它们是Composite组件的内容,在composite:implementation标记内,您可以使用表达式#{cc.attrs.attributeName}来访问composite:interface属性。

3.资源文件夹

将复合组件(“ .xhtml”文件)放入JSF的资源文件夹,请参见图1:

图1:此示例的目录结构。

jsf2-composite-component-folder

在这种情况下,将“ register.xhtml ”复合组件放入名为“ mkyong”的文件夹中。

4.完整的例子

完成后,让我们看看“ register.xhtml”的完整示例。

档案:register.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:composite="http://java.sun.com/jsf/composite"
      >
    
    <composite:interface>
    
    	<composite:attribute name="nameLable" />
    	<composite:attribute name="nameValue" />
    	<composite:attribute name="emailLable" />
    	<composite:attribute name="emailValue" />
    	
   	<composite:attribute name="registerButtonText" />
    	<composite:attribute name="registerButtonAction" 
    		method-signature="java.lang.String action()" />
    		
    </composite:interface>
	
    <composite:implementation>
	
	<h:form>
			
		<h:message for="textPanel" style="color:red;" />
			
		<h:panelGrid columns="2" id="textPanel">
			
			#{cc.attrs.nameLable} : 
			<h:inputText id="name" value="#{cc.attrs.nameValue}" />
				
			#{cc.attrs.emailLable} : 
			<h:inputText id="email" value="#{cc.attrs.emailValue}" />
				
		</h:panelGrid>
			
		<h:commandButton action="#{cc.attrs.registerButtonAction}" 
			value="#{cc.attrs.registerButtonText}"
		/>
		
	</h:form>
		
    </composite:implementation>
	
</html>

使用复合组件

您刚刚创建了一个复合组件“ register.xhtml”,现在我们向您展示如何使用它。

1.复合组件访问路径

参见上面的图1; “ register.xhtml”文件位于“ mkyong”文件夹下。 这是您的访问方式:

<html xmlns="http://www.w3.org/1999/xhtml"   
      ///...
      xmlns:mkyong="http://java.sun.com/jsf/composite/mkyong"
      >
	  <mkyong:register />
</html>

http://java.sun.com/jsf/composite/folder-name-in-resources-folder
复合组件的文件夹名称定义为组件访问路径,例如,如果将“ register.xhtml”文件放在名为“ abc”的文件夹下,则应按以下方式访问它:

<html xmlns="http://www.w3.org/1999/xhtml"   
      ///...
      xmlns:mkyong="http://java.sun.com/jsf/composite/abc"
      >
	  <mkyong:register />
</html>

2.完整的例子

让我们看一个完整的示例,以显示“ register.xhtml”复合组件的用法。

文件:default.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:mkyong="http://java.sun.com/jsf/composite/mkyong"
      >
 
    <h:body>
 
    	<h1>Composite Components in JSF 2.0</h1>
 
	<mkyong:register 
		nameLable="Name" 
		nameValue="#{user.name}" 
		emailLable="E-mail" 
		emailValue="#{user.email}"

		registerButtonText="Register" 
		registerButtonAction="#{user.registerAction}"
	 />
	
    </h:body>
 
</html>

允许您通过公开的属性将硬编码值或后备方法或属性传递到复合组件中,提交表单时,JSF将自动完成所有后备bean绑定。

PS这是对感兴趣的用户的“用户”托管或支持Bean。

package com.mkyong;
 
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="user")
@SessionScoped
public class UserBean{
 
	public String name;
	public String email;
	
	//getter and setter methods for name and email

	public String registerAction(){
		return "result";
	}
}

演示版

这是结果。

网址: http:// localhost:8080 / JavaServerFaces / default.xhtml

jsf2-composite-component-example

下载源代码

下载它– JSF-2-Composite-Components-Example.zip (11KB)

参考

  1. JSF 2 Composite:接口JavaDoc
  2. JSF 2 Composite:实现JavaDoc
  3. JSF 2 Composite:属性JavaDoc

翻译自: https://mkyong.com/jsf2/composite-components-in-jsf-2-0/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值