锁定老帖子 主题:JSF标签
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-12
以上是它的一些属性,常用的是比如限制它的小数位数,它是可以四舍五入的哦~p~,当我们使用type时,指定要转换的类型时,通常可以给些货币显示,如 currency 代表(流通)货币的意思
<h:outputText value="#{test.number}"> <f:convertNumber type="currency" maxFractionDigits="2"/> </h:outputText>
<h:outputText value="#{test.date}"> <f:convertDateTime pattern="yyyy-MM-dd"/> </h:outputText> 由上面两种转换得出的结果输出为 注意的是转换的标签要在被转换数据的之间。。。
日期转换: 2008-10-12 数字带货币显示: ¥4.46
日期年有日期都用小写,月份特殊些,要大写,为了与分钟区别开来,¥符号是指当前系统使用的货币为准
2、 验证器——验证输入组件中的值; 首先看上面的一小段代码。它是要求数值必须是大于10并且小于10000的。属于范围验证 而用法跟要转换的一样要嵌套在被验证的标签之间。。 验证完之后显示的错误消息要用<h:message>来显示。属性for是指来自于哪个验证,一般在被验证上要有id这属性的名字与期对应 <f:validateDoubleRange minimum="10" maximum="10000"/> <f:validateLength minimum="13"/> 在输入组件值非空时才验证
required="true" ——非空验证 这里验证失败的消息是JSF自带的错误消息,如果要想改变其输出内容要执行下面几步 1)因为它记录的验证信息比较多,所以我们找到默认的消息文件。 在Web站点下的lib目录里找到jsf-impl.jar包,里面目录中javax.faces/下包含了四个资源文件 以Messages为例打开找到相应的提示错误消息后把内容转换成中文,(需要转换成ACSII码),之后就建立一个默认的文件Message.properties 再建立一个Message_zh_CN.properties文件,把相应要替换的错误消息存入这两资源文件中。 2)配置faces-config.xml文件 在根元素后面加上这样的代码
<application> <message-bundle>Message</message-bundle> </application> Message为资源文件的文件名 这里要注意的问题是。。。没整理出来,自己都没配置成功。嘿嘿
3、显示数据,类似于迭带输入,但这里的dataTable可以生成表格。 <h:dataTable/> 下面看一个完整的前台JSP页面的代码
需要注意的是: 1.上面的代码都是需要输入显示的,所以必须在<f:view>之间, 2.需要对输出的内容设置“受管Bean”。上面的受管BEAN别名为stu 3.在dataTable后面的属性 value中指定的属性必须是受管Bean中带get的方法。如上面的是getShow()方法 4.在表格中显示的表头为固定格式,所以它要使用到了<f:facet>标签,属性name写死,为header指定为表头 文字要在其之间嵌套输出标签<outputText>内容写在属性value中 5.如果需要在表格中产生提交事件的必须要在form表单中。。。。。切记!!
JSF常用标签 超链接标签-commandLink 注意该标签必须使用监听,否则直接指定action处理器的也报错。。切记!!
一:jsfconverter(自定义消息) 这个上面有总结,只是没配置成功。步骤都一样了。这里就不重复阐述了因为下面第二点也会对自定义消息使用上:) 二: 业务验证消息 1)首先建立一个资源文件. Properties文件。如Message <application> <message-bundle>Message</message-bundle> </application>
3)在message.properties文件中设置消息文字 error.noequal=\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef. error.haha=\u7528\u6237\u540d. java.faces.component.UIInput.REQUIRED=haha\: {0}Value is required:).
javax.faces.component.UIInput.REQUIRED这个为替换原始提示的消息,而上面的error.noequal是自定义的提示消息 4)在页面表单上加上下面代码 <f:view> <h:form> <h:message style="color:blue"/><br/> 用户名:<h:inputText id="username" value="#{userform.username}"/><br/> 密码:<h:inputSecret id="密码" value="#{userform.userpass}" required="true"/> <h:message for="密码" style="color:blue"/><br/> <h:commandbutton value="登陆" actionListener="#{userform.login}" action="#{userform.outcome}"/> </h:form> </f:view>
显示验证错误的消息使用标签<h:messages>,显示非空的我们使用<h:message for=”此处为参数显示的值,可中文”> 做好前台页面准备之后就对此处的提交按钮加上ACTION处理器及其监听方法 一个为actionListener=”#{userform.login}” 监听方法 另一个为action=”#{userform.outcom}” action处理器 //action处理器 public String outcome(){ return str; } public void login(ActionEvent e){ if(username.equals(userpass)){ str="success"; }else{ //生成业务消息; FacesContext context = FacesContext.getCurrentInstance(); //根据客户端时区,动态选择装载资源文件; ResourceBundle bundle = ResourceBundle.getBundle("test",context.getViewRoot().getLocale()); //根据键名读取消息内容; String msg = bundle.getString("error.noequal"); String msg2 = bundle.getString("error.haha"); //生成消息对象,并存储到FacesContext中; context.addMessage("error.noequal",new FacesMessage(msg)); context.addMessage("error.haha",new FacesMessage(msg2)); str = "fail"; } }
import javax.faces.context.FacesContext; import java.util.ResourceBundle; import javax.faces.application.FacesMessage;
主要思路是通过Util包的ResourceBundle类对象先找到资源文件,然后获得facesContext上下文,并从资源文件中获取的消息存放在facesMessage对象中并保存在上下文中方便页面调用显示
三:JSF自定义验证、 1、 UIInput 标记提供了validator 属性 下面的是邮箱验证才是自定的,所用使用到了validator属性,指定了自定义的验证方法email <f:view> <h:form> 用户名:<h:inputText id="username" value="#{userform.username}" required="true"/> <h:message for="username" style="color:red"/> <br/> 邮箱:<h:inputText validator="#{userform.emailValidate}" id="email" value="#{userform.email}" required="true"/> <h:message for="email" style="color:red"/> <br/> </h:form> </f:view>
public void emailValidate(FacesContext context,UIComponent component,Object value) throws ValidatorException{ String xemail = (String)value; //判断Email 是否合法; if(xemail.indexOf("@")<0){ throw new ValidatorException{ MessageFactory.getMessage(context,"error.email") } } }
throw new ValidatorException(MessageFactory. getMessage(context, “error.email"));此处的error.email 就是资源文件的键名
这里使用的内置对象一般是指request、session之类的 1. 例子:通过超链接传递参数(使用内置对象) <f:view> <h:form> <h:commandLink value="分页显示" actionListener="#{userform.processpage}"> <f:param value="2" name="page"/> </h:commandLink> </h:form> </f:view>
而在这个受管Bean中写上刚才的监听方法 使用到的类为 import java.util.Map; import javax.faces.context.FacesContext; //接收超链接参数; public void processpage(ActionEvent e){ Map map= FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); String page= (String)map.get("page"); System.out.println("page=" + page); }
//接收超链接参数; public void processpage(ActionEvent e){ HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); String page= (String)request.getParameter("page"); System.out.println("page=" + page); }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 5255 次