ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产乱子伦精品,国产日韩欧美一区二区三区乱码,亚洲国产精品久久一线不卡http://www.aygfsteel.com/fool/category/12774.html坚持ž®±æ˜¯èƒœåˆ©!zh-cnMon, 08 Oct 2007 21:32:09 GMTMon, 08 Oct 2007 21:32:09 GMT60jsf1.2 自定义日历组ä»?/title><link>http://www.aygfsteel.com/fool/archive/2007/10/08/150988.html</link><dc:creator>å‚? ç“?/dc:creator><author>å‚? ç“?/author><pubDate>Mon, 08 Oct 2007 02:58:00 GMT</pubDate><guid>http://www.aygfsteel.com/fool/archive/2007/10/08/150988.html</guid><wfw:comment>http://www.aygfsteel.com/fool/comments/150988.html</wfw:comment><comments>http://www.aygfsteel.com/fool/archive/2007/10/08/150988.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fool/comments/commentRss/150988.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fool/services/trackbacks/150988.html</trackback:ping><description><![CDATA[开发自å·Þqš„jsf¾l„äšgòq¶ä¸æ˜¯ä¸€ä»¶å®¹æ˜“的事情åQŒå› ä¸ºjsf¾l„äšg对于应用½E‹åºå‘˜æ¥è¯´è¿˜æ˜¯è¿‡äºŽå¤æ‚跟耗费旉™—´äº?ji¨£n)。开发不依赖于具体实现jsf-api的第三方jar包的¾l„äšgž®±æ›´ä¸å®¹æ˜“了(ji¨£n)åQŒè¦åšçš„工作比较的多.本例参照äº?ji¨£n)一个jsf1.1¾l„äšg的开源跟jsf1.2-RI的源ç ?理论上应该是可以通用的组ä»?òq¶ä¸”是一个实用的åŸÞZºŽjsf1.2的日历组件ã€?因䨓(f¨´)源码太长åQŒä¸æ–¹ä¾¿åœ¨è¿™é‡Œä¸€ä¸€è´´å‡ºæ¥ï¼Œåªå¥½½Ž€ç•¥ä»‹¾lä¸€ä¸‹å„个类的功能,å?qi¨¢ng)一些配¾|®äº†(ji¨£n)åQŒæ„Ÿå…´è¶£çš„æœ‹å‹å¯ä»¥ä»Žé™„äšg里下è½?如果要用在别的地方可以自己打个jaråŒ?jsf自定义组件至ž®‘需要三个类:<br />   处理标签属性的¾c»com.sun.faces.metal.MetalCalendarTag,¾l´æŠ¤çŠ¶æ€å¤„ç†è¾“å…¥çš„¾c»com.sun.faces.metal.MetalCalendar和一个外部呈现器¾c»com.sun.faces.metal.MetalCalendarRenderer(其中addRequiredMessage(FacesContext context, MetalCalendar cal)之类的方法很有趣åQŒå®šä¹‰äº†(ji¨£n)<h:message> 标签的一些类å®?,˜q™é‡Œç€é‡è¯´æ˜Žä¸€ä¸‹æ ‡½{‘Ö¤„理类åQŒå› ä¸ºjsf1.2è·Ÿjsf1.1çš„å®žçŽ°æœ‰äº›ä¸ä¸€æ øP¼ŒåŽŸå› æ˜¯jsf1.2使用äº?ji¨£n)统一的EL语言ã€?br /> Jsf1.2中所有的自定义标½{„¡š„属性都是一个javax.el.ValueExpression的实例,所有的æ–ÒŽ(gu¨©)³•¾l‘定都是一个javax.el.MethodExpression的实例,不再需要去创徏一个ValueBindingå’ŒMethodBiding.关于˜q™ä¸€ç‚¹å¯ä»¥å‚考网上的jsf1.2新特性的文档。com.sun.faces.metal.HtmlBasicRenderer¾cÕd¾ˆòq²è„†åQŒç›´æŽ¥ä»Žjsf1.2-RI中copy˜q‡æ¥ç•¥åŠ æ”¹åŠ¨åQŒæ˜¯com.sun.faces.metal.MetalCalendarRenderer的超¾c…R€?br /> com.sun.faces.metal.metl. StaticResourcePhaseListener¾cÖM¸€ä¸ªäº‹ä»¶ç›‘听类åQŒå®ƒçš„作用是把一些js,css,囑փæ–‡äšg½{‰è¾“出到客户端,以定制组件的外观åQŒè€Œä¸æ˜¯åœ¨å‘ˆçŽ°å™¨ç±»ä¸­é€šè¿‡writerAttribute(“img”,”tt.gif”,”img”)之类的通过图象的URLåŽÕd®šä½è¿™ä¸ªæ–‡ä»¶ã€‚è¿™æ ïL(f¨¥ng)š„目的只有一个,ž®±æ˜¯æ–‡äšg打成jar包,以便供第三方使用ã€?br />  com.sun.faces.metal.util.FacesMessage¾cÕd¾ˆä¹Ÿå¾ˆòq²è„†ä»Žjavax.faces.application.FacesMessage¾cȝ‘ô(h¨´)承而来åQŒå®žé™…上只是ä¸ÞZº†(ji¨£n)改变?sh¨´)¸‹ä¸€FACES_MESSAGES 属性,使之看è“v来像˜q™æ ·public static final String FACES_MESSAGES = "com.sun.faces.metal.util.Messages"; com.sun.faces.metal.util包中有两个Messages.properties属性文ä»Óž¼Œä¸€ä¸ªæ˜¯é’ˆå¯¹ä¸­æ–‡çš?<br /> com.sun.faces.metal.util.FacesMessageFactory¾cÖM¹Ÿåªæ˜¯ä»Žjsf1.2-ri包中复制˜q‡æ¥çš?˜q™æ ·æˆ‘们ž®±å¯ä»¥å®Œå…¨ä¸ä¾èµ–jsf-api的实现而定义了(ji¨£n)自己的message属æ€?<br /> 剩下的就是一些辅助类äº?ji¨£n),也还½Ž—容易看的æ‡?<br /> 原本应该很庸长的一些叙˜q°åœ¨˜q™é‡Œæžåº¦‹¹“羃äº?ji¨£n),½Ž€ç›´å°±æ˜¯æ²¡æ³•理解的åQŒå¥½åœ¨å¦‚果有自定义jsf¾l„äšg的基¼‹€åQŒæºç ä¹Ÿåº”该˜q˜çœ‹å¾—懂.<a title="源码下蝲" href="http://www.aygfsteel.com/Files/fool/jsf1.2日历¾l„äšg.rar">源码下蝲</a> <img src ="http://www.aygfsteel.com/fool/aggbug/150988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fool/" target="_blank">å‚? ç“?/a> 2007-10-08 10:58 <a href="http://www.aygfsteel.com/fool/archive/2007/10/08/150988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF 在弹出对话框里修改多行记å½?/title><link>http://www.aygfsteel.com/fool/archive/2006/07/31/60963.html</link><dc:creator>å‚? ç“?/dc:creator><author>å‚? ç“?/author><pubDate>Mon, 31 Jul 2006 02:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/fool/archive/2006/07/31/60963.html</guid><wfw:comment>http://www.aygfsteel.com/fool/comments/60963.html</wfw:comment><comments>http://www.aygfsteel.com/fool/archive/2006/07/31/60963.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/fool/comments/commentRss/60963.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/fool/services/trackbacks/60963.html</trackback:ping><description><![CDATA[ <p> (t¨©ng) 在javaserver facesé‡Œåšå¼¹å‡ºå¯¹è¯æ¡†åÆˆä¸æ˜¯ä¸€ä»¶å®¹æ˜“çš„äº‹æƒ…,ž®¤å…¶æ˜¯åœ¨å¼¹å‡ºå¯¹è¯æ¡†é‡Œåšä¿®æ”¹è®°å½•的操作,感觉˜q˜æ˜¯è›®éº»çƒ?ch¨³)çš? ˜q™é‡Œä¸»è¦ç”¨åˆ°äº?ji¨£n)两个javascriptž®æŠ€å·?window.open("","popup","height=480,width=320,toolbar=no,menubar=no,scrollbars=no");打开一个空白网™å늚„½H—口,然后动态设¾|®ä¿®æ”ÒŽ(gu¨©)Œ‰é’®æäº¤æ—¶çš„target属æ€?另一个小技巧是 (t¨©ng)setInterval('opener.window.location.href=opener.window.location.href;window.close();',20);在编辑页面提交表单时做这ä¸?/p> <p> <br />昄¡¤ºæ•°æ®çš„æ–‡ä»¶show.jsp<br /><<a href="mailto:%@page">%@page</a> contentType="text/html; charset=GB2312"%><br /><<a href="mailto:%@taglib">%@taglib</a> uri="<a prefix="f"%><br /><<a href="mailto:%@taglib">%@taglib</a> uri="<a prefix="h"%><br /><html><br /><head><br /><script language="javascript" type=""><br /> (t¨©ng)pressed="fail";<br />function setPress(newValue){<br /> (t¨©ng) (t¨©ng) pressed=newValue;<br /> (t¨©ng) (t¨©ng) }<br />function confirmSubmit(){</p> <p> (t¨©ng) if(pressed="editor"){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) popup = window.open("","popup","height=480,width=320,toolbar=no,menubar=no,scrollbars=no");<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) popup.openerFormId=document.forms["fors"].id;<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) popup.focus();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) document.forms["fors"].target="popup";</p> <p> (t¨©ng) }<br />}</p> <p></script><br /><script (t¨©ng) language="javascript" type=""><br /> (t¨©ng)function SetCheckedStatus()<br />{<br /> (t¨©ng) (t¨©ng)  (t¨©ng)var oTable=document.all['fors:data'];<br /> (t¨©ng)var oChkAll=document.all['fors:selectall']</p> <p> (t¨©ng)if(oTable != null && oChkAll != null)<br /> (t¨©ng){<br /> (t¨©ng) (t¨©ng)for(j=1;j<oTable.rows.length;j++)<br /> (t¨©ng) (t¨©ng){<br /> (t¨©ng) (t¨©ng) (t¨©ng)oTable.rows(j).cells(0).children.item(0).checked=oChkAll.checked;<br /> (t¨©ng) (t¨©ng)}<br /> (t¨©ng)}<br />}</p> <p></script><br /><link href="css/styles3.css" rel="stylesheet" type="text/css"/><br /><title>show book</title><br /></head><br /><body bgcolor="#ffffff"><br /><f:view><br /> (t¨©ng) <h:form id="fors" onsubmit="return confirmSubmit()"><br /> (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGrid id="act" columns="1" cellpadding="0" cellspacing="0" width="100%" border="0" columnClasses="btstyle"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGroup><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:selectBooleanCheckbox id="selectall" onclick="SetCheckedStatus()"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputLabel for="selectall"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="å…¨é€?/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:outputLabel><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="¾~–辑" onclick="setPress('editor')" action="editor" actionListener="#{cd.editorTriggered}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="删除" onclick="setPress('del')" actionListener="#{paramsetup.delDirectoryTriggered}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="增加" onclick="setPress('add')"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="保存" onclick="setPress('save')" actionListener="#{paramsetup.saveActionTriggered}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGroup><br /> (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGrid><br /> (t¨©ng) (t¨©ng) (t¨©ng) <h:dataTable id="data" value="#{cd.model}" var="c" cellpadding="5" cellspacing="10"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText1" value="选择"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:selectBooleanCheckbox id="selectBooleanCheckbox1" value="#{c.editor}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText2" value="书名"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{c.title}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText3" value="作è€?/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{c.artist}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText4" value="ä»äh ¼"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{c.price}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) </h:dataTable><br /> (t¨©ng) </h:form><br /></f:view><br /></body><br /></html></p> <p> </p> <hr /> <p>¾~–辑™åµé¢ä¹Ÿå°±å¼¹å‡ºå¯¹è¯½H—页面editor.jsp<br /><<a href="mailto:%@page">%@page</a> contentType="text/html; charset=GBK"%><br /><<a href="mailto:%@taglib">%@taglib</a> uri="<a prefix="f"%><br /><<a href="mailto:%@taglib">%@taglib</a> uri="<a prefix="h"%><br /><html><br /><head><br /><title>editor</title><br /><script type=""><br />function confirmSubmit(){<br /> (t¨©ng)setInterval('opener.window.location.href=opener.window.location.href;window.close();',20);</p> <p>}</p> <p></script><br /></head><br /><body bgcolor="#ffffff"><br /><f:view><br /> (t¨©ng) <h:form id="fors" onsubmit="return confirmSubmit()"><br /> (t¨©ng) (t¨©ng) (t¨©ng) <h:dataTable id="data" value="#{cd.editorModel}" var="c" cellpadding="5" cellspacing="10"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText2" value="书名"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputText value="#{c.title}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText3" value="作è€?/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputText value="#{c.artist}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText4" value="ä»äh ¼"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputText value="#{c.price}"/><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column><br /> (t¨©ng) (t¨©ng) (t¨©ng) </h:dataTable><br /> (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGrid columns="1"><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="保存" action="show" actionListener="#{cd.saveTriggered}"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:commandButton><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="取消" type="button" onclick="javascript:window.close();"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:commandButton><br /> (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGrid><br /> (t¨©ng) </h:form><br /></f:view><br /></body><br /></html><br /></p> <p> </p> <hr /> <p>backing bean CDBean.java</p> <p>package test;</p> <p>import java.util.*;<br />import javax.faces.model.ListDataModel;<br />import javax.faces.event.ActionEvent;</p> <p>public class CDBean {<br /> (t¨©ng) (t¨©ng) (t¨©ng) private List CDList = new ArrayList();</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) private ListDataModel model;</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) private ListDataModel editorModel;</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) public CDBean() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) CDList.add(new CD("计算机应ç”?, "长江", 25.00F, ""));<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) CDList.add(new CD("java模式", "长江", 80.00F, ""));<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) CDList.add(new CD("j2EE1.4标准教材", "长江", 100.00F, ""));<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) public ListDataModel getModel() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) if (model == null) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) model = new ListDataModel(CDList);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) }<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return model;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) public ListDataModel getEditorModel() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return editorModel;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) public void editorTriggered(ActionEvent actionEvent) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) List list = (List) model.getWrappedData();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) List editorList = new ArrayList();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) for (Iterator it = list.iterator(); it.hasNext(); ) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) CD cd = (CD) it.next();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) if (cd.getEditor()) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) editorList.add(cd);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) }<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) }<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) editorModel = new ListDataModel(editorList);<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) public void saveTriggered(ActionEvent actionEvent) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) List list = (List) editorModel.getWrappedData();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) for (Iterator it = list.iterator(); it.hasNext(); ) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) CD cd = (CD) it.next();<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) cd.setEditor(false);<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) }</p> <p> (t¨©ng) (t¨©ng) (t¨©ng) }</p> <p>}<br /></p> <hr /> <br />辅助¾c»CD.java<br />package test; <p><br />public class CD implements java.io.Serializable {</p><p> (t¨©ng) (t¨©ng) (t¨©ng) private Long id;</p><p> (t¨©ng) (t¨©ng) (t¨©ng) private String artist;</p><p> (t¨©ng) (t¨©ng) (t¨©ng) private String category;</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) private String subCategory;</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) private String title;</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) private float price;</p><p> (t¨©ng) (t¨©ng) (t¨©ng) private boolean editor;</p><p> (t¨©ng) (t¨©ng) (t¨©ng) public CD() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public CD(String aTitle, String aArtist, float aPrice, String aCategory) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.title = aTitle;<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.artist = aArtist;<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.price = aPrice;<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.category = aCategory;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public void setArtist(String aArtist) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.artist = aArtist;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p> (t¨©ng) (t¨©ng) (t¨©ng) public String getArtist() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return artist;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public void setCategory(String aCategory) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.category = aCategory;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public String getCategory() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return category;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public void setId(Long aId) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.id = aId;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p> (t¨©ng) (t¨©ng) (t¨©ng) public Long getId() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return id;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public void setPrice(float aPrice) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.price = aPrice;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public float getPrice() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return price;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public void setSubCategory(String aSubCategory) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.subCategory = aSubCategory;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public String getSubCategory() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return subCategory;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public void setTitle(String aTitle) {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.title = aTitle;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p><br /> (t¨©ng) (t¨©ng) (t¨©ng) public String getTitle() {<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return title;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }</p><p> (t¨©ng) (t¨©ng) (t¨©ng) public void setEditor(boolean editor){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) this.editor=editor;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }<br /> (t¨©ng) (t¨©ng) (t¨©ng) public boolean getEditor(){<br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) return this.editor;<br /> (t¨©ng) (t¨©ng) (t¨©ng) }<br />}<br /></p><hr /><p>配置文äšgfaces-config.xml<br /><?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "<a ></p><p><faces-config xmlns="<a ><br /> (t¨©ng) <managed-bean><br /> (t¨©ng) (t¨©ng) (t¨©ng) <managed-bean-name>cd</managed-bean-name><br /> (t¨©ng) (t¨©ng) (t¨©ng) <managed-bean-class>test.CDBean</managed-bean-class><br /> (t¨©ng) (t¨©ng) (t¨©ng) <managed-bean-scope>session</managed-bean-scope><br /> (t¨©ng) </managed-bean><br /> (t¨©ng) <navigation-rule><br /> (t¨©ng) (t¨©ng) (t¨©ng) <from-view-id>/show.jsp</from-view-id><br /> (t¨©ng) (t¨©ng) (t¨©ng) <navigation-case><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <from-outcome>editor</from-outcome><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <to-view-id>/editor.jsp</to-view-id><br /> (t¨©ng) (t¨©ng) (t¨©ng) </navigation-case><br /> (t¨©ng) </navigation-rule><br /> (t¨©ng) <navigation-rule><br /> (t¨©ng) (t¨©ng) (t¨©ng) <from-view-id>/editor.jsp</from-view-id><br /> (t¨©ng) (t¨©ng) (t¨©ng) <navigation-case><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <from-outcome>show</from-outcome><br /> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <to-view-id>/show.jsp</to-view-id><br /> (t¨©ng) (t¨©ng) (t¨©ng) </navigation-case><br /> (t¨©ng) </navigation-rule><br /></faces-config></p><p></p><hr /><p>最后的æ€È»“:在弹出窗口里是没法用jsf的验证机制的,原因是setInterval('opener.window.location.href=opener.window.location.href;window.close();',20);有一个javascriptçš„opener对象的引ç”?当用jsf验证时如果有非法输入,弹出½H—口™åµé¢ž®×ƒ¼š(x¨¬)åˆäh–°,˜q™å°±ä¼?x¨¬)丢失对opener的引ç”?而且˜q˜å­˜åœ¨å¦ä¸€ä¸ªé—®é¢˜å°±æ˜¯å¦‚果验证正¼‹®å°±åº”该关闭对话æ¡?å¤ÞpÓ|ž®×ƒ¸åº”该关闭对话æ¡?˜q™ä¸ªé—®é¢˜?sh¨´)¹Ÿä¸å¥½è§£å? 那么是不是就没办法解决验证的问题å‘?不是çš?可以在弹出页面里用frame引用两个™åµé¢,一个保持对opener的引ç”?另一个就是编辑作用了(ji¨£n),具体作法ž®±æ˜¯åœ¨backing bean 里添加一个action动态导航方法里调用FacesContext.getCurrentInstance().getResponseWriter().write(); 在write æ–ÒŽ(gu¨©)³•里打印用于控制关闭对话框的javascript代码,因䨓(f¨´)actionæ–ÒŽ(gu¨©)³•能执行就表示验证一定通过äº?如果验证不通过的话ž®×ƒ¼š(x¨¬)˜q”回自èín™åµé¢æŠ›å‡ºå¼‚常.在write æ–ÒŽ(gu¨©)³•é‡?最后在write æ–ÒŽ(gu¨©)³•的最后一定不能忘?sh¨´)?FacesContext.getCurrentInstance().responseComplete()以蟩˜q‡è{向的执行,也就是蟩˜q‡jsf生命的最后一个阶ŒD?˜q˜æœ‰å¦ä¸€ä¸ªæ›´å¥½çš„解决æ–ÒŽ(gu¨©)¡ˆ,用Ajax实现验证,具体实现ž®×ƒ¸å†èµ˜˜qîCº†(ji¨£n),因䨓(f¨´)它不是jsf的一部分:) ‹Æ¢è¿ŽåŠ å…¥QQ¾Ÿ?30406099 (t¨©ng)</p><p> (t¨©ng)</p><img src ="http://www.aygfsteel.com/fool/aggbug/60963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/fool/" target="_blank">å‚? ç“?/a> 2006-07-31 10:44 <a href="http://www.aygfsteel.com/fool/archive/2006/07/31/60963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现jsf中的h:dataTable ¾l„äšgçš„h:column内的h:selectBooleanCheckbox¾l„äšg的全选的æ–ÒŽ(gu¨©)³•http://www.aygfsteel.com/fool/archive/2006/07/07/57137.htmlå‚? ç“?/dc:creator>å‚? ç“?/author>Fri, 07 Jul 2006 07:02:00 GMThttp://www.aygfsteel.com/fool/archive/2006/07/07/57137.htmlhttp://www.aygfsteel.com/fool/comments/57137.htmlhttp://www.aygfsteel.com/fool/archive/2006/07/07/57137.html#Feedback0http://www.aygfsteel.com/fool/comments/commentRss/57137.htmlhttp://www.aygfsteel.com/fool/services/trackbacks/57137.html (t¨©ng) (t¨©ng) (t¨©ng) 标题太长,不知道怎么用更准确的语­a€æ¥åŞ容这ä¸?呵呵:) 初学jsfæ—‰™‡åˆîC¸ž®‘的问题,比如在客端视图中有一ä¸?lt;table>标签的一列均æ˜?lt;input type="checkbox" />标签å¦?br /><table><tr><td><input type="checkbox" /></td><td>name</td></tr><tr><td><input ="checkbox" /></td><td>name</td></tr><table> .要实现所有的<input>标签的全选在jsp中我们可以给所æœ?lt;input>标签的name属性赋一个相同的值再用javascript˜q›è¡Œå¾ªçŽ¯å¤„ç†ž®±å¯ä»¥äº†(ji¨£n). 但是在jsf中就不是那么å®ÒŽ(gu¨©)˜“的事äº?因䨓(f¨´)jsfä¼?x¨¬)给所有的<input>标签生成一个不相同值的id属性和一个不同值name属æ€?
 (t¨©ng) (t¨©ng) (t¨©ng) 来看看jsf中的解决æ–ÒŽ(gu¨©)¡ˆ
jsfä¸?<h:dataTable> 通常¾l‘定一个ListDataModel 或者是ArrayDataModel½{‰æ•°æ®æ¨¡åž?而该数据模型通常ž®è£…List,或都Array之类的对è±?˜q™äº›å¯¹è±¡çš„元素都是一些bean 对象,把数据库中表的字ŒD‰|˜ ž®„成bean (t¨©ng) 再给该beanæ·ÕdŠ ä¸€ä¸ªé¢å¤–boolean型的属æ€?用来¾l‘定 <h:selectBooleanCheckbox>¾l„äšg,在backing bean中就可以通过判断˜q™ä¸ª¾l‘定值来处理<h:dataTable>¾l„äšg选中的行对应的数据模型所拥有的beanäº? (t¨©ng) 那么如何在页面实çŽ?lt;input type="checkbox"/>的全选呢,˜q˜æ˜¯ç”¨javascript 只是javascript要先å¯?lt;table>标签˜q›è¡Œæ“ä½œäº?˜q™å°±æ²¡jsp中那么直è§? js代码



</script><script (t¨©ng) language="javascript" type="">
 (t¨©ng)function SetCheckedStatus()
{
 (t¨©ng) (t¨©ng)  (t¨©ng)var oTable=document.all['fors:data'];
 (t¨©ng)var oChkAll=document.all['fors:selectall']

 (t¨©ng)if(oTable != null && oChkAll != null)
 (t¨©ng){
 (t¨©ng) (t¨©ng)for(j=1;j<oTable.rows.length;j++)
 (t¨©ng) (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng)oTable.rows(j).cells(0).children.item(0).checked=oChkAll.checked;
 (t¨©ng) (t¨©ng)}
 (t¨©ng)}
}

</script>

jsf™åµé¢ä»£ç :


<%@page contentType="text/html; charset=GB2312"%>
<%@taglib uri="<%@taglib uri="<html>
<head>
 (t¨©ng) <script type="" src="css/screen.js"></script>
<script language="javascript" type="">
 (t¨©ng)pressed="fail";
function setPress(newValue){
 (t¨©ng) (t¨©ng) pressed=newValue;
 (t¨©ng) (t¨©ng) }
function confirmSubmit(){
 (t¨©ng) if(pressed=="add"){
 (t¨©ng) (t¨©ng) wid =calculateCenterWidth(340);
 (t¨©ng) (t¨©ng) (t¨©ng) hi=calculateCenterHeight(160);
 (t¨©ng) (t¨©ng) (t¨©ng) popup=window.open("adduser.faces","popup","height=160,width=340,toolbar=no,left="+wid+",top="+hi+",menubar=no,scrollbars=no");
 (t¨©ng) (t¨©ng) (t¨©ng) popup.focus();
 (t¨©ng) (t¨©ng) (t¨©ng) return false;
 (t¨©ng) }
 (t¨©ng) if(pressed=="del"){
 (t¨©ng) (t¨©ng) (t¨©ng) return confirm("¼‹®å®šè¦åˆ é™¤å—?");
 (t¨©ng) }
 (t¨©ng) if(pressed=="save"){
 (t¨©ng) (t¨©ng) (t¨©ng) return confirm("¼‹®å®šè¦ä¿®æ”¹å—?");
 (t¨©ng) }
}

</script><script (t¨©ng) language="javascript" type="">
 (t¨©ng)function SetCheckedStatus()
{
 (t¨©ng) (t¨©ng)  (t¨©ng)var oTable=document.all['fors:data'];
 (t¨©ng)var oChkAll=document.all['fors:selectall']

 (t¨©ng)if(oTable != null && oChkAll != null)
 (t¨©ng){
 (t¨©ng) (t¨©ng)for(j=1;j<oTable.rows.length;j++)
 (t¨©ng) (t¨©ng){
 (t¨©ng) (t¨©ng) (t¨©ng)oTable.rows(j).cells(0).children.item(0).checked=oChkAll.checked;
 (t¨©ng) (t¨©ng)}
 (t¨©ng)}
}

</script><link href="css/styles3.css" rel="stylesheet" type="text/css"/>
<title>用户½Ž¡ç†</title>
</head>
<body bgcolor="#ffffff">
<f:view>
 (t¨©ng) <h:form id="fors" onsubmit="return confirmSubmit()">
 (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGrid id="top" cellspacing="0" cellpadding="0" width="100%" border="0" columns="3" columnClasses="left,topMiddle,right">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:graphicImage value="images/jiao1.gif"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value=""/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:graphicImage value="images/jiao2.gif"/>
 (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGrid>
 (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGrid cellspacing="0" cellpadding="0" width="100%" border="0" columnClasses="middleLeft,btstyle,middleRight" columns="3">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value=""/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGroup>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <!-- 数据-->
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGrid id="act" columns="1" cellpadding="0" cellspacing="0" width="100%" border="0" columnClasses="btstyle">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:panelGroup>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:selectBooleanCheckbox id="selectall" onclick="SetCheckedStatus()"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputLabel for="selectall">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="å…¨é€?/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:outputLabel>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="¾~–辑" onclick="setPress('editor')"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="删除" onclick="setPress('del')" actionListener="#{function.delUserTriggered}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="增加" onclick="setPress('add')"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:commandButton value="保存" onclick="setPress('save')" actionListener="#{function.saveUserTriggered}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGroup>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGrid>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:dataTable id="data" value="#{function.userInfoModel}" var="user" width="100%" border="1" cellpadding="0" cellspacing="0">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText1" value="选择"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:selectBooleanCheckbox id="selectBooleanCheckbox1" value="#{user.editor}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText7" value="ç™Õd½•å?/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{user.username}" rendered="#{not user.editor}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputText value="#{user.username}" rendered="#{user.editor}"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:inputText>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText2" value="用户å?/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{user.name}" rendered="#{not user.editor}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputText value="#{user.name}" rendered="#{user.editor}"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:inputText>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText3" value="用户密码"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="********" rendered="#{not user.editor}"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:outputText>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputSecret id="inputSecret1" value="#{user.password}" redisplay="true" rendered="#{user.editor}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:message for="inputSecret1"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText4" value="性别"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{user.xingbie}" rendered="#{not user.editor}"/>

 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:selectOneListbox id="selectOneListbox1" (t¨©ng) size="1" value="#{user.xingbie}" (t¨©ng) rendered="#{user.editor}" style="width:100px">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:selectItems value="#{function.xinbeiList}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:selectOneListbox>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:message for="selectOneListbox1"/>


 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText5" value="岗位"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{user.gangwei}" rendered="#{not user.editor}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputText value="#{user.gangwei}" rendered="#{user.editor}"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:inputText>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <f:facet name="header">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText id="headerText6" value="部门"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </f:facet>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value="#{user.bumen}" rendered="#{not user.editor}"/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:inputText value="#{user.bumen}" rendered="#{user.editor}"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:inputText>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:column>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:dataTable>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <!-- 数据-->
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGroup>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <h:outputText value=""/>
 (t¨©ng) (t¨©ng) (t¨©ng) </h:panelGrid>
 (t¨©ng) (t¨©ng) (t¨©ng) <table id="fors:bottom" border="0" cellpadding="0" cellspacing="0" width="100%">
 (t¨©ng) (t¨©ng) (t¨©ng)
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <tbody>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <tr>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <td class="left">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <img src="images/jiao3.gif" alt=""/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </td>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <td class="bottomMiddle"> (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </td>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <td class="right">
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) <img src="images/jiao4.gif" alt=""/>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </td>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </tr>
 (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) (t¨©ng) </tbody>
 (t¨©ng) (t¨©ng) (t¨©ng) </table>
 (t¨©ng) </h:form>
</f:view>

</body>
</html>

因䨓(f¨´)æ—‰™—´åŽŸå› ä¹Ÿæ‡’çš„å†™ä¸€ä¸ªå®Œæ•´çš„åº”ç”¨äº?不过我想有以上的代码也够äº?毕竟˜q™é‡Œåªæ˜¯è§£å†³ä¸€ä¸ªå°é—®é¢˜.





]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º Óñ»·ÏØ| Í­ÁêÊÐ| ¹ó¸ÛÊÐ| ±Ï½ÚÊÐ| ½ÌÓý| Ñô³ÇÏØ| ÓôÄÏÏØ| ¼ÃÑôÏØ| ÇØ°²ÏØ| ÐÂÓàÊÐ| ÁúÃÅÏØ| ¶ÁÊé| ¾©É½ÏØ| áÔÃ÷ÏØ| °×Ë®ÏØ| Õã½­Ê¡| Ð˰²ÏØ| ¶«Æ½ÏØ| ³¤É³ÏØ| ¹ã°²ÊÐ| ´óÒØÏØ| ÎÞé¦ÏØ| À¶É½ÏØ| ãôºéÏØ| ¸·¿µÊÐ| ºéÑÅÏØ| ¸ßÌÆÏØ| ÃÜÔÆÏØ| ³Ç¹ÌÏØ| Ã÷¹âÊÐ| ÑÓ°²ÊÐ| çÆÔÆÏØ| ¼ªÄ¾Èø¶ûÏØ| ¸ÊÄÏÏØ| ÇßÔ´ÏØ| ÉÏÈÄÊÐ| ³àË®ÊÐ| ´ï×ÎÏØ| ÎÅÏ²ÏØ| ÁÙÏæÊÐ| ÄþºÓÏØ|