我怎样才能知道 JSF 组件的 id 以便在 Javascript 中使用

2023-11-30

Problem:有时你会想从 javascript 访问一个组件getElementById,但是 id 是在 JSF 中动态生成的,所以你 需要一种获取对象 ID 的方法。我在下面回答了如何做到这一点。


原问题:我想使用如下代码。如何在 Javascript 中引用 inputText JSF 组件?

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <head>
       <title>Input Name Page</title>
        <script type="javascript" >
          function myFunc() {
            // how can I get the contents of the inputText component below          
            alert("Your email address is: " + document.getElementById("emailAddress").value);
          }
       </script>
    </head>
    <h:body>
        <f:view>
            <h:form>
                Please enter your email address:<br/>
                <h:inputText id="emailAddresses" value="#{emailAddresses.emailAddressesStr}"/>
                <h:commandButton onclick="myFunc()" action="results" value="Next"/>
            </h:form>
        </f:view>
    </h:body>
</html>

Update: 这个帖子JSF2.0 中的客户端标识符讨论使用如下技术:

<script type="javascript" >
  function myFunc() {
    alert("Your email address is: " + document.getElementById("#{myInptTxtId.clientId}").value);
  }
</script>

<h:inputText id="myInptTxtId" value="backingBean.emailAddress"/>
<h:commandButton onclick="myFunc()" action="results" value="Next"/>

建议该属性id on the inputText成分 创建一个可以通过 EL 访问的对象#{myInptTxtId}, 在上面的例子中。文章接着指出,JSF 2.0 添加了 零论证getClientId()方法到UIComponent班级。 从而允许#{myInptTxtId.clientId}构造建议 上面获取组件实际生成的id。

尽管在我的测试中这不起作用。其他人可以确认/否认吗? 下面建议的答案存在上述问题的缺点 技术则不然。所以最好知道上述技术是否有效 实际上有效。


您需要准确使用 JSF 在生成的 HTML 输出中分配的 ID。右键单击网络浏览器中的页面并选择查看源代码。这正是 JS 看到的 HTML 代码(你知道,JS 运行在 web 浏览器中并在 HTML DOM 树上拦截)。

Given a

<h:form>
    <h:inputText id="emailAddresses" ... />

它看起来像这样:

<form id="j_id0">
    <input type="text" id="j_id0:emailAddress" ... />

Where j_id0是生成的 HTML 的生成 ID<form>元素。

你宁愿把所有的JSF都给NamingContainer组件固定id这样 JSF 就不会自动生成它们。这<h:form>是其中之一。

<h:form id="formId">
    <h:inputText id="emailAddresses" value="#{emailAddresses.emailAddressesStr}"/>

这样表单就不会获得自动生成的 ID,例如j_id0输入字段将得到一个固定的IDformId:emailAddress。然后你就可以在 JS 中引用它了。

var input = document.getElementById('formId:emailAddress');

从那时起,您可以像往常一样继续使用 JS 代码。例如。通过获得价值input.value.

也可以看看:

  • 如何使用 jQuery 选择 JSF 组件?

Update根据您的更新:您误解了博客文章。特别的#{component}参考是指current评估 EL 表达式的组件,并且这只适用于组件本身的任何属性。您想要的也可以通过以下方式实现:

var input = document.getElementById('#{emailAddress.clientId}');

与(注意binding到视图,你应该绝对不将其绑定到 bean)

<h:inputText binding="#{emailAddress}" />

但这实在是丑陋。最好使用以下方法,其中将生成的 HTML DOM 元素作为 JavaScript 传递this函数的引用

<h:inputText onclick="show(this)" />

with

function show(input) {
    alert(input.value);
}

如果您使用 jQuery,您甚至可以更进一步,使用样式类作为标记接口来抽象它们

<h:inputText styleClass="someMarkerClass" />

with

$(document).on("click", ".someMarkerClass", function() {
    var $input = $(this);
    alert($input.val());
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我怎样才能知道 JSF 组件的 id 以便在 Javascript 中使用 的相关文章

  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • 如何使用 Shopify API 将商品添加到购物车

    我正在使用 Shopify API 开发自定义网络应用程序 这里的想法是使用应用程序作为独家店面 只需向 Shopify API 发出请求 我已在我的 Shopify 帐户中设置了一个私人应用程序来执行此操作 我从 api 提取产品没有问题
  • 少吞咽然后缩小任务

    我必须在 gulp 中执行 2 个步骤 减少 css 文件格式 缩小生成的 css 文件 这是我的吞咽文件 var gulp require gulp watch require gulp watch less require gulp l
  • 非常基本的 JS 编码,是否有 SoundManager2?

    我想在我的网站上包含一个具有以下属性的音频 可能的视频播放器 必须可通过 div 通过 CSS 设计样式 可以读取所有ID3信息 可以从数据库中提取文件 可能是 GoDaddy 的 Easy Database 无闪光 可转移至智能手机等 我
  • Exceljs:迭代每行和每列的每个单元格

    我想在所有单元格中添加粗边框 这是一个有角度的项目 我正在使用打字稿 我可以为 1 个单元格做到这一点 worksheet getCell A1 border top style thick left style thick bottom
  • javascript函数知道它的名字吗

    我有一个名为 getItem 的函数 我想使用其中的代码读取该函数的名称 这可能吗 function getItem var functionName how do I read the function name alert functi
  • 如果Functions是javascript中的对象,为什么function.constructor指向Function而不是Object?

    当像这样从窗口对象创建以下函数时 function userInfo 既然函数是对象 为什么 userInfo constructor 显示 Function 而不是 Object 当使用以下内容时 它甚至显示函数而不是对象 Functio
  • Javascript“命名空间”和 jQuery AJAX

    我正在使用此处列出的建议 http www odetocode com articles 473 aspx http www odetocode com articles 473 aspx 使用模拟的JavaScript AJAX网络聊天系
  • React JS“this”没有按预期工作

    我有下面的代码 save function var this this console log this refs itemText this setState isEditing false function console log In
  • 标记内的值发生变化时调用函数

    JavaScript 有没有什么方法可以在段落标记的值更改时调用函数 概述 HTML p 00 00 p
  • Backbone.js 应用程序可以逐步增强并可供搜索引擎抓取吗?

    我需要为我的下一个项目实现一个 MVC JavaScript 框架 但它既是一个网站 又是一个 Web 应用程序 是否可以公开数据服务器端 然后解析 URL 以显示 JS 版本 我计划使用 Rails 作为服务器端代码 我写了一个关于这个主
  • 元素在主体内找不到足够的空间 - JavaScript 样式

    相关信息 该页面包含两个元素 An
  • 如何使用 JavaScript 播放任意 MIDI 音符?

    澄清一下 我不想生成 MIDI 文件 也不想播放 MIDI 文件 我希望即时播放 MIDI 音符 我尝试使用https github com mudcube MIDI js https github com mudcube MIDI js作
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • D3 时间解析返回 null

    根据此页面上的说明 https github com mbostock d3 wiki Time Formatting https github com mbostock d3 wiki Time Formatting我正在尝试解析 ISO
  • javascript 中一次仅选中一个复选框

    I have 3复选框 我只想1一次选中的复选框 下面是我的 html 小提琴 JS小提琴 https jsfiddle net n03jLhqa 我想要这个工作在IE8还请建议如何做 这个怎么样 fiddle http jsfiddle
  • 调用不带括号的 javascript 函数

    以下 renderChat 函数用于将消息和图像渲染到聊天板上 该函数内部还有另一个函数 var onComplete function 它完成创建列表元素并将其附加到聊天列表的所有工作 onComplete函数之后就只有这三行代码 img
  • 用于图形操作的 Javascript 库

    有没有建议的 javascript 替代 pythonpygraph http code google com p python graph or NetworkX http networkx lanl gov 应该注意的是 可视化不是必需
  • Firefox 和 Chrome 为 offsetTop 提供了不同的值

    我试图相对于输入字段定位一个跨度元素 让我们称之为 工具提示跨度 为此 我将工具提示跨度和输入字段包装在另一个跨度元素中 我们称之为 包装器跨度 该元素具有position relative 然后我设置position absolute在工
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案

随机推荐

  • 在 CONSOLE C# 中检测单个按键

    我是编码新手 决定从 C 开始 我决定编写一个简单的控制台程序来检测按键操作 如果只按下 Enter 键 它将显示数字 问题是你只要按住键 它就会继续显示数字 我应该在代码中添加什么以便程序仅检测SINGLE按下并忽略用户是否HOLDING
  • PHP中如何计算两个日期之间的天数? [复制]

    这个问题在这里已经有答案了 如果我有几个字符串 startDate and endDate被设置为 例如 2011 07 01 and 2011 07 17 指2011年7月1日和2011年7月17日 如何计算从开始日期到结束日期的天数 在
  • 如何只用左、右两个键控制蛇

    目前 我正在使用所有四个键来控制蛇左 右 上 下 我想知道如何只使用左右键来移动蛇 if event key pygame K LEFT snake direction 2 elif event key pygame K RIGHT sna
  • jQuery 找到哪个父级更接近?

    在 jQuery 中你可以调用closest寻找最近的父母 如果我有一个a in a li in a ul in a td in a table 我想知道是否ul父母比父母更亲近table父母 显然 在这种情况下 答案是显而易见的 如果我跑
  • 如何根据子值使用 jq 提取键

    我正在尝试使用 jq 处理一些 JSON 具体来说 我想要一个基于其子值的特定键 给定示例 foo primary true blah beep bar primary false blah narf baz primary false b
  • 来自 PHP exec 的 taskkill

    我刚刚尝试执行此操作 function kill hr exec taskkill IM uper exe output array return print r output echo br return 然而 输出是这样的 它不是很有用
  • 根据单元格值复制行并粘贴到具有相同单元格值名称的新工作表上

    我有一个数据表 其中包含 3 列的员工列表 COLUMN A DEPARTMENT COLUMN B EMPCODE COLUMN C EMPNAME 这是示例数据 我想根据 COLUMN A DEPARTMENT 拆分此工作表的内容 并将
  • Angular:根据从下拉菜单中选择的选项显示 div 内容(ng-show/ng-switch)

    所以我对前端 角度 bootsrap 等 完全陌生 但我这里有一个我创建的 JSFiddle 链接 我想做的基本上是如果有人在下拉列表中选择选项 VA 菜单 我想使用适当的 ng 开关或显示 并显示具有相同名称的 div 类 在本例中为 d
  • 使用 CType 时检测从 Windows DLL 调用 Python 脚本

    我正在寻求在 Windows DLL 中添加功能来检测调用 Python 脚本的名称 我正在使用 ctypes 通过 Python 调用 dll 如答案中所述如何从脚本语言调用 DLL 在 dll 中 我能够使用 WINAPI GetMod
  • 如何在 Jupyter Lab 中打开调试器按钮

    我正在使用 jupyter lab 并尝试嵌入debugger in it Windows 10 64 bit 以下是我遵循的步骤 conda create name ml python 3 8 2 conda activate ml co
  • 使用 Chef 在 Windows 节点上挂载 Windows 共享

    我正在尝试将文件从 Windows 共享复制到我的节点的缓存 显然没有办法从remote file 做到这一点 所以我的替代想法是尝试将Windows 共享安装到本地驱动器并通过文件资源访问我需要的文件 然而 即使 Chef 告诉我挂载成功
  • 如何在 Eclipse 中使用调试视角。[调试 java/j2ee 应用程序]

    是否有任何易于遵循的教程来在 Eclipse 中调试 Java J2EE 应用程序 有关如何检查未检查和已检查异常的分步指南 我一直试图在互联网上寻找 但没有用 要添加 Java 异常断点 在 调试 透视图中选择 断点 视图 然后单击异常断
  • ip地址和mac地址的正则表达式

    谁能建议我 ip 地址和 mac 地址的正则表达式 我正在使用 python 和 django 例如 http ip地址 SaveData 127 0 0 1 00 0C F1 56 98 AD 对于 mac 地址 我尝试遵循但没有成功 0
  • 以 boost 精神实现运算符优先级

    我试图复制这个例子为了实现类似 C 的运算符优先级规则 我从一个子集开始 但最终计划添加其他子集 尽我所能 我无法获得解析单个二进制操作的语法 它可以很好地解析文字 44 3 42 stackoverflow 但会失败 例如3 4 我确实看
  • 通过 Selenium 运行测试用例时出现 java.lang.NullPointerException

    我面临 NullPointerException 的问题 我尽了最大努力 但无法解决这个问题 我正在为我的项目实现 POM 模型 Selenium 这一页 public class VendorsHomePageApp WebDriver
  • 用科学记数法写json float

    我想使用 Python 3 6 以科学记数法表示 JSON 文件中的浮点数 没有 import json a 0 001234567 print json dumps a json encoder FLOAT REPR lambda x e
  • 如何防止 Android 设备在插入电源时进入睡眠状态

    我希望每当我的一项活动正在运行并且手机插入电源时都保持屏幕打开 我知道唤醒锁很棘手 因此我正在寻找有关如何实现此特定目标的示例或一些文档 不要为此使用唤醒锁 只需设置和清除窗口标志WindowManager LayoutParams FLA
  • 在Python中的嵌套字典中添加键

    elements hydrogen number 1 weight 1 00794 symbol H helium number 2 weight 4 002602 symbol He Add an is noble gas氢和氦字典的布尔
  • QFileSystemModel 自定义图标?

    在我的项目中 我有一个 QTreeView 显示我的驱动器上的位置 我需要将文件的所有图标更改为自定义图标 但保留文件夹 我重新实现了 QFileSystemModel 并且能够更改所有图标 有什么方法可以限制仅更改文件而不是文件夹吗 QV
  • 我怎样才能知道 JSF 组件的 id 以便在 Javascript 中使用

    Problem 有时你会想从 javascript 访问一个组件getElementById 但是 id 是在 JSF 中动态生成的 所以你 需要一种获取对象 ID 的方法 我在下面回答了如何做到这一点 原问题 我想使用如下代码 如何在 J