JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。
JSF UISelectItems HtmlSelectOneListbox 绑定值 TimeZones
(注意:我对 jakarta.faces.component.UISelectItem 进行了子类化并重写了 toString,但现在下面的代码实际上是相同的,尽管我将来会删除对象搜索和 s...
我用于输入地址字段。默认情况下设置 active-index="-1",以便在加载页面时面板将关闭。用户输入详细信息后,我想要面板区域wh。 ..
我想我尝试了在其他答案中找到的所有内容。 我正在使用 liferay 和 spring-boot 微服务。我正在通过从微服务调用端点来拍摄图像,并尝试使用 l...
如何将带有 ResultSetDataModel 的 h:dataTable 项目传递给操作方法?
我有一个代码,当我尝试访问(通过 JSF 数据表,使用命令按钮)时,它给出以下错误: 我收到的错误是: javax.el.MethodNotFoundException:/page.xhtml @...
我目前正在学习 JSF,使用 JavaEE,所以我将不胜感激任何可能的帮助。我有一段代码,当我尝试访问(通过 JSF 数据表,使用命令按钮)时,它给了我
PrimeFaces ajax 不会将参数值传递给支持 bean
我正在研究拖放功能。我需要将 中的列内容移动到另一列,但不同的行。 (这有效)问题是,我需要传递值......
PrimeFaces:将选定的值传递给自动编译方法(请求范围)
我有一个目前不容易实现的要求。应根据 SelectOneMenu 选择在此处预先选择自动完成功能。为此,我需要之前的选择...
如何使用primefaces gMap实现Google地图绘制路线
我从 https://www.primefaces.org/showcase/ui/data/gmap/geocode.xhtml 实现了 gMap,它按预期工作,但我需要绘制从用户位置到地图上的点的路线。 ...
在集群环境中,当状态保存方法设置为客户端且用户会话有效时,出现 ViewExpiredException
我有一个使用 Mojarra 2.2.9 的 JSF 应用程序 并部署在集群环境的WebSphere 8.5.5.4上 并且 javax.faces.STATE_SAVING_METHOD 设置为客户端。 即使我所有的申请...
为什么 <ui:fragment rendered> 没有对 <h:outputStylesheet> 和 <h:outputScript>
我有一个 JSF 2 主模板,如下所示: 我有一个 JSF 2 主模板,如下: <!DOCTYPE html> <html lang="#{localeManager.language}" xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <f:view locale="#{localeManager.locale}"> <h:head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title><ui:insert name="title">Default Title.</ui:insert></title> <!-- Development Stylesheets --> <ui:fragment rendered="#{facesContext.application.projectStage eq 'Development'}"> <h:outputStylesheet name="css/bootstrap.css" library="bootstrap" /> <h:outputStylesheet name="css/font-awesome.css" library="fontawesome" /> </ui:fragment> <h:outputStylesheet name="css/main.css" library="core" /> <ui:insert name="header-stylesheet" /> <!-- Production Stylesheets --> <ui:fragment rendered="#{facesContext.application.projectStage eq 'Production'}"> <h:outputStylesheet name="css/bootstrap.min.css" library="bootstrap" /> <h:outputStylesheet name="css/font-awesome.min.css" library="fontawesome" /> </ui:fragment> <ui:insert name="header-script" /> </h:head> <h:body> <div id="wrapper"> <div id="header"> <ui:insert name="header">Default content</ui:insert> </div> <div id="body"> <ui:insert name="body">Default body</ui:insert> </div> <div id="footer"> <ui:insert name="footer">Default footer</ui:insert> </div> </div> <!-- Development Scripts --> <ui:fragment rendered="#{facesContext.application.projectStage eq 'Development'}"> <h:outputScript name="jquery-2.1.4.js" library="jquery" /> <h:outputScript name="js/bootstrap.js" library="bootstrap" /> </ui:fragment> <!-- Production Scripts --> <ui:fragment rendered="#{facesContext.application.projectStage eq 'Production'}"> <h:outputScript name="jquery-2.1.4.min.js" library="jquery" /> <h:outputScript name="js/bootstrap.min.js" library="bootstrap" /> </ui:fragment> <ui:insert name="body-script" /> </h:body> </f:view> </html> 在 Wildfly 9.0.1 Final 中部署它时,我看到我的所有 <ui:fragment> 属性都被渲染了。这是为什么?我正在使用 JSF 2.2 框架进行开发。 My Faces 项目阶段是 Development。 注意: 在SO中关于这个问题的所有答案中,没有一个是这个问题的解决方案(所以我做了我的作业)。 <h:outputStylesheet>和<h:outputScript>是特殊组件。他们将在视图构建期间通过 UIViewRoot#addComponentResource() 将声明的样式表或脚本资源添加到视图中(请参阅此处的 Mojarra 源代码)。 这与组件或其父组件的 rendered 条件无关。实际上,它们基本上被重新定位到 <h:head> 或 <h:body> 的最末端,具体取决于 target 属性的值,导致它们不再位于 <ui:fragment> 内部。 然后,在渲染过程中,仅考虑它们自己的 rendered 属性(实际上也考虑 <h:head> 的属性,但这毫无意义)。 您有 2 个选择: 使用视图构建时间标签有条件地将它们添加到视图中。项目阶段条件无论如何都是应用范围内的。 <!-- Development Stylesheets --> <c:if test="#{facesContext.application.projectStage eq 'Development'}"> <h:outputStylesheet ... /> <h:outputStylesheet ... /> </c:if> <!-- Production Stylesheets --> <c:if test="#{facesContext.application.projectStage eq 'Production'}"> <h:outputStylesheet ... /> <h:outputStylesheet ... /> </c:if> 检查组件资源自身的rendered属性中的条件。如有必要,请使用 <c:set> 创建一个短 EL 变量。 <c:set var="dev" value="#{facesContext.application.projectStage eq 'Development'}" scope="application" /> <!-- Development Stylesheets --> <h:outputStylesheet ... rendered="#{dev}" /> <h:outputStylesheet ... rendered="#{dev}" /> <!-- Production Stylesheets --> <h:outputStylesheet ... rendered="#{not dev}" /> <h:outputStylesheet ... rendered="#{not dev}" /> 另请参阅: JSF2 Facelets 中的 JSTL...有意义吗?
使用组件文件导出 csv 当数据包含逗号时,primefaces 下载会产生逗号分隔符问题
我有以下问题。我正在使用 Primefaces、JSF 和 Java。我正在尝试生成一个包含数据库数据的 csv 文件,并使用 primefa 的 p:fileDownload 组件将其导出...
我正在领导我们的项目团队从 PrimeFaces 6 迁移到 PrimeFaces 13,它看起来就像用户放大得太近时出现的正常垂直滚动条,不再出现。 ...
通过 ui:param 将数组列表发送到 JSF ui:composition 模板
我知道我可以使用 ui:param 从基于模板构建的组合中传递字符串 像这样:http://www.mkyong.com/jsf2/how-to-pass-parameters-to-jsf-2-0-template-file/ 然后我就可以使用参数了...
如何将 JSF 托管 bean 属性传递给 JavaScript 函数?
我想知道如何将 JSF 托管 bean 属性传递给 JavaScript 函数。 像这样的东西: 函数实际化菜单(键){ #{linkedMenu.setKey(key)} } </</desc> <question vote="16"> <p>我想知道如何将 JSF 托管 bean 属性传递给 JavaScript 函数。</p> <p>类似这样的:</p> <pre><code><script> function actualizaMenu(key){ #{linkedMenu.setKey(key)} } </script> </code></pre> <pre><code><ul> <ui:repeat value="#{moduleList.modulos}" var="entity"> <li> <a onclick="actualizaMenu(#{entity.key})">#{entity.nombre}</a> </li> </ui:repeat> </ul> </code></pre> </question> <answer tick="true" vote="28"> <p>这并不完全是 JSF 变量的“传递”。这只是打印 JSF 变量,就像它们是 JavaScript 变量/值一样。要知道,JSF 和 JS 根本不同步运行。 JSF 在网络服务器中运行并生成 HTML/CSS/JS 代码,一旦到达那里,这些代码又在网络浏览器中运行。</p> <p>您的具体问题很可能是因为您编写的 JSF 代码生成了无效的 JS 语法。验证这一点的一个简单方法是检查 JSF 生成的 HTML 输出,您可以通过右键单击浏览器中的<em>View Source</em> 找到该输出,并检查您是否在浏览器的 JS 控制台中没有看到任何语法错误报告。 Chrome/IE9+/Firefox23+中按F12即可找到。</p> <p>想象一下<pre><code>#{entity.key}</code></pre>在这里</p> <pre><code><a onclick="actualizaMenu(#{entity.key})">#{entity.nombre}</a> </code></pre> <p>打印一个Java字符串变量,如<pre><code>"foo"</code></pre>,那么生成的HTML将如下所示</p> <pre><code><a onclick="actualizaMenu(foo)">some name</a> </code></pre> <p>但是,嘿,看,它代表一个名为 <strong><code>foo</code></strong> 的 JavaScript <pre>变量</pre>,而不是 JS 字符串值!所以如果你真的想最终成为</p> <pre><code><a onclick="actualizaMenu('foo')">some name</a> </code></pre> <p>那么您应该指示 JSF 准确生成该 HTML:</p> <pre><code><a onclick="actualizaMenu('#{entity.key}')">#{entity.nombre}</a> </code></pre> <p>请注意 JSF 变量中的特殊字符。您可以使用 <a href="http://showcase.omnifaces.org/functions/Strings" rel="noreferrer">OmniFaces <pre><code>of:escapeJS()</code></pre> 函数</a> 来实现。</p> <hr/> <p><strong>与具体问题无关</strong>,<pre><code>actualizaMenu()</code></pre>的具体实现没有任何意义。您似乎正在尝试设置 bean 属性。你不应该使用 JS 来实现这一点,而应该使用 <pre><code><h:commandLink></code></pre> 来代替。</p> <pre><code><h:commandLink value="#{entity.nombre}" action="#{linkedMenu.setKey(entity.key)}" /> </code></pre> <p>如有必要,嵌套 <pre><code><f:ajax></code></pre> 以使其异步。</p> </answer> <answer tick="false" vote="1"> <p>我建议使用 jQuery 的事件绑定和元素上的数据属性来获得相同的结果(假设您使用 jQuery):</p> <pre><code><script> function actualizaMenu(key){ /* Logic here ... */ } $(document).ready(function(){ $('.menuItem').click(function(){ var key = $(this).data('key'); actualizaMenu(key); ); }); </script> </code></pre> <p>...</p> <pre><code><ul> <ui:repeat value="#{moduleList.modulos}" var="entity"> <li> <a data-key="#{entity.key}" class="menuItem">#{entity.nombre}</a> </li> </ui:repeat> </ul> </code></pre> <p>并且,正如其他地方所指出的,除非 <pre><code>#{linkedMenu.setKey(key)}</code></pre> 实际上返回一段 javascript(这不太可能,即使确实如此,也可能会很糟糕),否则您还需要修复该函数。</p> </answer> <answer tick="false" vote="1"> <p>我知道这个问题已经很老了,但对于那些仍在寻找的人来说,还有另一种选择。</p> <p>如果您正在使用 primefaces,请尝试一下。 <a href="https://www.primefaces.org/showcase/ui/misc/requestContext.xhtml" rel="nofollow noreferrer">请求上下文</a></p> </answer> </body></html>
更新到 JSF 2.3 后 MultiViewHandler 中出现空指针
PrimeFaces 12 JSF 2.3.14 EAP 7.4.9 你好, 将应用程序从 2.1.19 更新到 JSF 2.3.14(JBoss EAP 7.4 的主要版本)后,我得到了 Nullpointer。 09:14:54,346 引起:java.lang。
查找NotSerializedException的原因:java.util.ArrayList$SubList
我正在使用 redisson 来保存我的应用程序的会话。该应用程序使用 JSF 2.3。 我试图找到 NotSerialized 异常的原因,但该应用程序仅记录 redisson 堆栈。基本上它并不指向...
Seam:在丰富的:dataTable 行中更新 h:inputText 中的数据时遇到问题
我正在尝试构建一个可编辑的表格来输入购买订单详细信息的值。我有一个绑定到列表的 rich:datatable,并且通过向列表添加元素来动态地将行添加到表中。恩...
使用 org.omnifaces.cdi.ViewScoped 时,我的 javax.servlet.Filter 在单个页面视图上同时接收 GET 和 POST
我的用于记录页面视图的 servletfilter 正在通过单个页面请求接收 GET 和 POST。我追溯到在页面支持 bean 上使用 Omnifaces ViewScope。 @命名 @org.omnifaces.cdi。
我想设置h:panelGrid中一行的高度。 我怎样才能做到这一点? 这是我的 CSS 类: .height8 { 高度:8px; } .height0 tr td{ 高度:0% } 页面代码: 我想设置 h:panelGrid 中一行的高度。 我怎样才能实现这个目标? 这是我的CSS类: .height8 { height: 8px; } .height0 tr td{ height: 0% } 页面代码: <h:panelGrid columns="2" columnClasses="height8, height8" rowClasses="height8"> <h:outputText value="This row"/> <h:outputText value=" is ok"/> <h:outputText value="This row"/> <h:outputText value=" is ok"/> <h:outputText value="This row" styleClass="height0"/> <h:outputText value=" height should be different" styleClass="height0"/> <h:outputText value="This row"/> <h:outputText value=" is ok"/> </h:panelGrid> 样式类 height0 在这里似乎不起作用。如何设置 h:panelGrid 中特定行的高度? 我会使用 CSS 并在行单元格内容上使用一个类: <h:panelGrid columns="2"> <h:outputText value="This row"/> <h:outputText value=" is ok"/> <h:outputText value="This row" styleClass="alt-height"/> <h:outputText value=" height should be different"/> </h:panelGrid> 您可以使用 :has() 伪选择器创建 CSS 规则来选择要更改高度的行: tr:has(.alt-height) { height: ... } 你有两种方法: 内联样式: <h:panelGrid columns="2" columnClasses="height8, height8" rowClasses="height8"> <h:outputText value="This row"/> <h:outputText value=" is ok"/> <h:outputText value="This row"/> <h:outputText value=" is ok"/> <h:outputText value="This row" style="height: 25px"/> <h:outputText value=" is ok" style="height: 25px"/> <h:outputText value="This row"/> <h:outputText value=" is ok"/> </h:panelGrid> CSS样式: 你的元素应该有一个 id: <h:panelGrid columns="2" columnClasses="height8, height8" rowClasses="height8"> <h:outputText value="This row"/> <h:outputText value=" is ok"/> <h:outputText value="This row"/> <h:outputText value=" is ok"/> <h:outputText value="This row" styleClass="customheight"/> <h:outputText value=" is ok" styleClass="customheight"/> <h:outputText value="This row"/> <h:outputText value=" is ok"/> </h:panelGrid> 并将此样式添加到您的 CSS 文件中: .customheight{ height: 25px; } 更改以下样式类应该可以工作 .height0 tr td{ height: 0px; //or what ever height you want to set to this row. }