问题标签 [naming-containers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsf - 在 p:radioButton 的 for-Attribute 中引用一个 id
是否可以引用一个 id 来标识作为 parent-parent-naming 容器的子组件的组件?
例如:
我想selectedFolder
从 for 属性中引用 id <p:radioButton>
。但既然<ui:repeat>
是 a NamingContainer
,selectedFolder
就存在于另一个中NamingContainer
,我看不出如何引用它。是否可以写类似的东西for="../selectedFolder"
?
我不能使用绝对 id 引用,因为这是复合组件的一部分。我也尝试过使用prependId="false"
in <ui:repeat>
,但没有奏效。
c# - 如何使用 INamingContainer 创建自定义控件?
我正在尝试以下操作:
我的容器类:
我的标记:
但是由于某种原因Container.Index
没有渲染任何值,只是空的。正在创建 10 个控件,但没有一个显示值。
我做错什么了?我该如何修复它以显示Index
价值?
我尝试了类似于 MSDN 示例的方法:
c# - 在服务器控件中动态创建 CustomValidator
我有一个自定义服务器控件,它包装了一个 RadEditor(基本上是一个文本区域)。我正在尝试动态添加一个 CustomValidator ,但我在初始页面加载时不断收到此错误
找不到“”的“ControlToValidate”属性引用的控件 ID“RadEditor1”。
这是我在服务器控件中用于创建 CustomValidator 的代码:
jsf - 如何通过 clientId 访问复合组件的兄弟
我有一个捆绑了一些输入字段的复合组件。该组件将在一个页面上多次使用,并包含一个按钮来复制这些组件中另一个的值。为此,我需要通过其 clientId 访问其中一个兄弟姐妹作为
<f:ajax execute=":XXX:siblingId" render="...">
我的问题在于构建这个ID。我有兄弟姐妹的名字,我可以确保它与包含复制按钮的组件位于同一个命名容器中,但我无法控制完整的嵌套层次结构,所以它可能是:form:foo:bar:parent:child
或只是form:parent:child
. 所以基本上我想获取当前复合组件的前缀,但没有组件自己的 ID,然后附加要从中复制的组件的 ID。
这类似于以下问题:
但是,这两个答案都使用了 PrimeFaces 特定的功能,例如@parent
和widgetVar
,这不适用于我的项目。
在尝试 EL 的隐式对象时,我基本上尝试了与第二个问题的海报相同的东西——结果相同:cc.parent.clientId
总是空的。我也尝试cc.namingContainer.clientId
了两者的一些组合,唉 - 没有成功。parent
特别是不能按预期工作的事实让我感到困惑......
那么:是否有一种与组件库无关的方式来访问包含复合组件命名容器的“路径”?对象应该如何parent
工作,尤其是:我们什么时候可以使用它,什么时候不可以?
PS:我正在考虑使用组合的完整 clientId,然后用 修剪其实际 ID fn:split
,但是,如果有更直接的方式,我会很乐意使用它。
ajax - component.namingContainer.parent 跳过 h:form
我做了一个复合组件,里面是一个<f:ajax>标签,它的“render”属性是cc的一个参数。
像这样的东西:
我在一个表单中使用这个 cc,那已经在一个外部命名容器中:
问题是,如果我写
我收到此错误:
而如果我使用这个(+ .parent):
错误是:
而不是预期的ID:
所以看起来我的cc命名容器的父级不是表单,而是外部命名容器
有什么办法:1,获得正确的父(表单)2,在我将EL作为参数传递之前评估EL(所以我可以将计算出的clientId传递给我的cc而不是EL表达式,所以组件不会引用到 commandLink 标签,但到 h:form 我把我的抄送)
我知道我可以使用
但我不喜欢那个解决方案
此外,将表单的 prependId 属性设置为 false 会破坏整个组件的查找(结果也会导致 ajax 标记)
asp.net - 从内容页面中动态创建的输入控件中检索表单数据
我会相信这个问题有一个明显的答案,但我似乎找不到任何答案。我有一个 ASP.Net MasterPage,它有一个内容页面,其中有几个动态创建的输入控件。当我发布包含它们的表单时,我想检索它们的值。这只能使用控件的 name 属性并调用 Request.Form[name]。
由于输入控件是 ContentPlaceHolder 的一部分,因此它们的 name 属性被分配了控件的 UniqueId,它是一个可能如下所示的字符串,例如:“ctl00$skts_body_div$MyNameId”。
上面例子中的名字不是随机生成的名字,而是依赖于父控件的结构,所以在回发中生成名字“ctl00$skts_body_div$MyNameId”并不容易,所以我可以调用Request.Form["ctl00$skts_body_div$MyNameId"]。
检索已发布数据的最佳实践方式是什么?
该平台是.Net 4.0
感谢圣战
asp.net - ASP.Net - 命名容器和 ClientIDMode="Static"
MSDN 文档中关于 ClientIdMode 的说明:
静态 ClientID 值设置为 ID 属性的值。如果控件是命名容器,则该控件用作它所包含的任何控件的命名容器层次结构的顶部。
来源:http: //msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode%28v=vs.100%29.aspx
但是,我并没有发现“层次结构的顶部”业务就是这种情况。例如,我有一个用户控件:
为了更好地衡量,我也在控制源中设置了 clientidmode,尽管我不确定需要哪一个:
在用户控件中,我有一个文本框:
我的期望是文本框将被命名为WidgetsListControl$testTextBox
但是,我在查看源代码时发现的是:
我错过了什么?有没有一种方法可以实现我正在寻找的(较短的 id),而无需在用户控件中的每个控件上设置“静态”?
编辑:
实际上,仔细观察后,我发现 ID 属性的工作方式与 MSDN 中描述的一样 - 但是 name 属性仍然是命名容器层次结构的完整串联。
给定一个高度复杂的站点,这些控件的名称和 ID 开始占用大部分带宽(标记大小)。我似乎找不到任何好的解决方法来减少这方面的标记。
jsf - 如何实现 NamingContainer?所有孩子都获得相同的客户 ID
我尝试编写自己的树组件。树节点呈现为包含树组件的子组件的 div,例如:
到目前为止,一切都很好 - 一切都按预期工作,但h:outputText
重复获得相同的 id。
所以我让我的组件实现javax.faces.NamingController
,覆盖getContainerClientId()
:
index
在节点迭代期间设置和更新。但是getContainerClientId()
每个孩子只调用一次(而不是每个迭代和每个孩子,如我所料)。这会导致每个子 id 都以相同的容器 id 为前缀:
覆盖也是一样getClientId()
。
我错过了什么?
jsf - 实现 NamingContainer 的组件列表
我发现NamingContainer
JSF中有一个东西叫。不清楚哪个组件是命名容器。据我所知,<h:form>
和<h:dataTable>
自定义组件是命名容器。
我在哪里可以获得实现的类的列表javax.faces.component.NamingContainer
?