下面的代码是从PrimeFaces的DataGrid + DataTable的教程启发和放入<p:tab>
一个的<p:tabView>
居住在<p:layoutUnit>
的<p:layout>
.这是代码的内部部分(从p:tab
组件开始); 外部是微不足道的.
<p:tabView id="tabs">
<p:tab id="search" title="Search">
<h:form id="insTable">
<p:dataTable id="table" var="lndInstrument" value="#{instrumentBean.instruments}">
<p:column>
<p:commandLink id="select" update="insTable:display" oncomplete="dlg.show()">
<f:setPropertyActionListener value="#{lndInstrument}"
target="#{instrumentBean.selectedInstrument}" />
<h:outputText value="#{lndInstrument.name}" />
</p:commandLink>
</p:column>
</p:dataTable>
<p:dialog id="dlg" modal="true" widgetVar="dlg">
<h:panelGrid id="display">
<h:outputText value="Name:" />
<h:outputText value="#{instrumentBean.selectedInstrument.name}" />
</h:panelGrid>
</p:dialog>
</h:form>
</p:tab>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)
当我单击时<p:commandLink>
,代码停止工作并给出消息:
找不到表达式为"insTable:display"的组件,引用自"tabs:insTable:select".
当我尝试相同的使用时<f:ajax>
,它失败了,基本上告诉相同的不同消息:
<f:ajax>
包含一个未知的id"insTable:display"无法在组件"tabs:insTable:select"的上下文中找到它
这是怎么造成的,我该如何解决?
我一直在使用JSF处理一个简单的Java EE项目.
<h:form id="phoneForm">
<h:dataTable id="phoneTable">
</h:dataTable>
</h:form>
Run Code Online (Sandbox Code Playgroud)
我试图通过设置CSS #phoneTable { ... }
,但它不起作用.在客户端检查HTML源代码时,JSF生成的HTML表格似乎以形式获取客户端ID id="phoneForm:phoneTable"
.我无法应用CSS via #phoneForm:phoneTable { ... }
,因为冒号表示伪选择器的开始并导致错误.
我怎么能在CSS选择器中使用它呢?
有没有办法在外部JavaScript文件中使用"<%= someObject.ClientID%>"?
如果我使用代码
<%= someObject.ClientID %>
Run Code Online (Sandbox Code Playgroud)
在我的as(c/p)x页面的脚本标签中,它工作正常.在呈现的页面上,ClientID已解析.但是,如果我输入外部JS文件并添加:
它没有.有没有办法做到这一点,还是我坚持将该代码留在as(c/p)x文件中?
附带问题 - 在您的标记文件中执行<%= ...%>的行为是什么?
开发人员凭据(例如密码,密钥和客户端ID)旨在供您使用并标识您的API客户端.您将保密您的凭据并做出合理的努力来防止和阻止其他API客户端使用您的凭据.开发人员凭据可能未嵌入开源项目中.
(https://developers.google.com/terms/,我的重点)
这是否意味着我的开源驱动器命令行客户端需要强制我的软件的每个用户在Google云端控制台中设置一个新项目?有更好的选择吗?
它不是很难从非开源中提取客户端ID和客户端"秘密",为什么区别呢?
"安装应用程序"客户端ID和机密并不是真正的秘密,Google文档似乎同意:
该过程会生成客户端ID,在某些情况下会导致客户端机密,您将其嵌入应用程序的源代码中.(在这种情况下,客户端秘密显然不被视为秘密.)
我知道ClientID用于服务器端的javascript和UniqueId,ClientID使用下划线(_),而UniqueId在asp.net 2.0中使用美元符号($).但我没有得到的是为什么使用两个不同的id.为什么不能只使用或使用下划线或在服务器端和客户端使用美元符号.有人可以解释一下吗?
我是asp.net mvc的初学者,我有一个疑问:
我正在尝试在我的视图中为TextBox做一个标签,我想知道,我如何获取将在客户端渲染的Id以生成脚本...例如:
<label for="<%=x.Name.ClientId%>"> Name: </label>
<%=Html.TextBoxFor(x=>x.Name) %>
Run Code Online (Sandbox Code Playgroud)
我需要在"ClientId"中放置什么来确保将正确的ID呈现给相应的控件?
谢谢
干杯
JSF 2.0是否有内置方法来查找另一个组件的客户端ID?在SO上有大约一千个与客户端ID相关的问题,并且有很多hackish方法可以做到这一点,但我想知道JSF 2.0是否带来了一个我不知道的更简单的方法.
#{component.clientId}
评估给定组件自己的客户端ID,但我想引用另一个组件的ID.
这个博客文章提到component.clientId
,它也说#{someComponent.clientId}
有效,但从我可以告诉它没有.我相信他在JSF 2.0的任何参考实现出来之前都写过,所以他只是去了JSR,也许这个功能发生了变化.我不确定.
我知道PrimeFaces和RichFaces都有自己的函数来返回客户端ID,但我只是想知道是否有内置的JSF 2.0方法.这里有些例子:
这可以返回outputText的ID.
`<h:outputText value="My client ID : #{component.clientId}" />`
Run Code Online (Sandbox Code Playgroud)
根据上面的博客文章,这应该有效,但事实并非如此.我没有输出.
`<h:button id="sampleButton" value="Sample" />`
`<h:outputText value="sampleButton's client ID : #{sampleButton.clientId}" />`
Run Code Online (Sandbox Code Playgroud)
这适用于PrimeFaces:
`<h:outputText value="PrimeFaces : sampleButton's client ID : #{p:component('sampleButton')}" />`
Run Code Online (Sandbox Code Playgroud)
在RichFaces中工作:
`<h:outputText value="RichFaces : sampleButton's client ID : #{rich:clientId('sampleButton')}" />`
Run Code Online (Sandbox Code Playgroud)
此外,如果可能的话,我正在寻找不会破坏的解决方案,如果我更改了javax.faces.SEPARATOR_CHAR
值,或者我在引用的组件之外添加/删除容器.我花了很多时间来追踪由硬编码ID路径引起的问题.
是否可以设置ClientID
任何asp.net服务器控件?我怎样才能做到这一点?
我们刚刚将我们的应用程序从ASP.Net 2.0更新到ASP.Net 4.0.
我们已经包含在<system.web>
元素中的web.config中:
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
Run Code Online (Sandbox Code Playgroud)
我的理解是,这应该使控件与.Net 2.0/3.5相同.
但是......它不是......这是一个例子
这是在2.0中呈现的:
<input id="grdUserEntity__ctl1_chkSelectAll" type="checkbox"
name="grdUserEntity:_ctl1:chkSelectAll" onclick="javascript:iSelectAll();" />
Run Code Online (Sandbox Code Playgroud)
这是在4.0:
<input id="grdUserEntity_ctl01_chkSelectAll" type="checkbox"
name="grdUserEntity$ctl01$chkSelectAll" onclick="javascript:iSelectAll();" />
Run Code Online (Sandbox Code Playgroud)
区别:
2.0 id=grdUserEntity__ctl1_chkSelectAll
4.0 id=grdUserEntity_ctl01_chkSelectAll
Run Code Online (Sandbox Code Playgroud)
根据我读到的,配置设置将导致ASP.Net 4.0呈现服务器控件和客户端ID与先前版本相同.
我们做错了什么?
我正在尝试将canvas集成到我的应用程序中.所以我试图实现oauth2流程,我读了这个链接https://canvas.instructure.com/doc/api/file.oauth.html
执行OAuth2令牌请求流需要应用程序客户端ID和客户端密钥.要获得这些应用程序凭据,您需要注册您的应用程序.永远不应该共享客户端秘密.
对于Canvas Cloud,您可以从http://www.instructure.com/partners申请客户ID和密码,或联系您的客户代表.
所以我试图填写此表单 https://docs.google.com/forms/d/1C5vOpWHAAl-cltj2944-NM0w16AiCvKQFJae3euwwM8/viewform以获取客户端ID和密码.
一旦我填写并提交了表格,我就收到了这条消息
您生成用于开发的Canvas Key的请求已提交给讲师
因此,在提交表单后,我不知道如何获取客户端ID和客户端密码.
我希望有人帮助我继续我的工作.
clientid ×10
asp.net ×4
jsf ×3
javascript ×2
oauth ×2
primefaces ×2
ajax ×1
ascx ×1
asp.net-4.0 ×1
asp.net-mvc ×1
c# ×1
canvas ×1
client-side ×1
css ×1
facelets ×1
google-api ×1
google-oauth ×1
java ×1
jsf-2 ×1
open-source ×1
razor ×1
richfaces ×1
unique-id ×1