赛迪网 > IT技术 Java > (最新更新)Java基础
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

JAVA基础:javascript如何访问jsf组件

发布时间:2007.10.31 05:06     来源:赛迪网技术社区    作者:baocl

先看下面的jsf页面:

< html>
< %@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
< %@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
< f:view>
  < link href="styles.css" rel="stylesheet" type="text/css" />
  < head>
       < f:loadBundle basename="com.corejsf.messages" var="msgs"/>
       < title>
            < h:outputText value="#{msgs.windowTitle}"/>
       < /title>
  < /head>
  < body>
    < h:form id="registerForm">
    < table>
      < tr>
        < td>
           < h:outputText value="#{msgs.namePrompt}" styleClass="emphasis" />
        < /td>
        < td>
           < h:inputText/>
        < /td>
     < /tr>
     < tr>
        < td>
           < h:outputText value="#{msgs.passwordPrompt}"/>
       < /td>
       < td>
           < h:inputSecret id="password"/>
       < /td>
    < /tr>
    < tr>
        < td>
            < h:outputText value="#{msgs.confirmPasswordPrompt}"/>
        < /td>
        < td>
            < h:inputSecret id="passwordConfirm"/>
        < /td>
     < /tr>
  < /table>
  < h:commandButton type="button" value="Submit Form" onclick="checkPassword(this.form)"/>
  < /h:form>
  < /body>

< script type="text/javascript">
< !--
function checkPassword(form) {
   var password = form["registerForm:password"].value;
   var passwordConfirm = form["registerForm:passwordConfirm"].value;
    if(password == passwordConfirm)
        form.submit();
    else
        alert("Password and password confirm fields don't match");
 }
-->
< /script>
< /f:view>
< /html>


     这个页面使用JavaScript来确认密码字段是否匹配密码确认字段,表单名为registerForm,两个密码输入 组件名为password和passwordConfirm,当单击按钮时,将调用JavaScript函数checkPassword(form),如果密码不匹配,会显示JavaScript对话框,如果匹配,则会提交表单。

要注意的是:不能在JavaScript函数中使用如下类似语法来访问表单组件:
   documents.forms.registerForm.password
而应使用:
   documents.forms.registerForm["registerForm:password"].value

这是因为JSF解释上面< h:form id="registerForm">...< /h:form>一段时会生成如下代码:


< form id="registerForm" method="post" action="/javascript/index.faces;jsessionid=7A029269C9ECF42CF553C9B52C824E2E"
enctype="application/x-www-form-urlencoded">

< table>   
   < tr>
      < td>
          < span class="emphasis">Name:< /span>
      < /td>
      < td>
           < input type="text" name="registerForm:_id2" />
      < /td>
   < /tr>
   < tr>
      < td>
           Password:
      < /td>
      < td>
           < input id="registerForm:password" type="password" name="registerForm:password" value="" />
      < /td>
    < /tr>
    < tr>
       < td>
           Confirm Password:
       < /td>
       < td>
           < input id="registerForm:passwordConfirm" type="password" name="registerForm:passwordConfirm" value="" />
       < /td>
    < /tr>
< /table>
< input type="button" name="registerForm:_id5" value="Submit Form" onclick="checkPassword(this.form)" />
< input type="hidden" name="registerForm" value="registerForm" />< /form>

    JSF产生的所有表单控件都有符合formName:componentName格式的名称,这里的formName表示控件的表单的
名称,而componentName表示控件名称。如果没有指定id属性,则JSF框架会自动创建标识符,就象上面的HTML
片段中的按钮一样。因此,要访问上面的密码字段,必须使用下列方法:
   documents.forms.registerForm["registerForm:password"].value


 


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· JAVA基础:jsp处理表单的一些经验分享 (10-30) · solaris上开发J2EE应用中文问题的解决 (10-30)
· J2EE基础:j2ee所包含的13种核心技术 (10-30) · JAVA基础:关于bean-to-bean mapping (10-30)
· spring 2.0自定义xml 标记 (二 如何实现) (10-30) · spring 2.0自定义xml 标记 (一 相关类) (10-30)
· 使用JMX监控应用程序内、外部的状况 (10-30) · 关于Java分布式事务处理的问题 (10-30)
· Java中ThreadLocal的设计与使用 (10-30) · 多线程设计入门 (10-30)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 工信部“三定”公布 总编制731名设24司局
· 北京发电子商务监管意见 营利性网店须办照
· 直播 08中国城市信息化高峰论坛 案例点评
· 烽火网络校园解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统