jsf 相关问题

JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。

如何使用primefaces gMap实现Google地图绘制路线

我从 https://www.primefaces.org/showcase/ui/data/gmap/geocode.xhtml 实现了 gMap,它按预期工作,但我需要绘制从用户位置到地图上的点的路线。 ...

回答 1 投票 0

在集群环境中,当状态保存方法设置为客户端且用户会话有效时,出现 ViewExpiredException

我有一个使用 Mojarra 2.2.9 的 JSF 应用程序 并部署在集群环境的WebSphere 8.5.5.4上 并且 javax.faces.STATE_SAVING_METHOD 设置为客户端。 即使我所有的申请...

回答 2 投票 0

为什么 <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...有意义吗?

回答 1 投票 0

使用组件文件导出 csv 当数据包含逗号时,primefaces 下载会产生逗号分隔符问题

我有以下问题。我正在使用 Primefaces、JSF 和 Java。我正在尝试生成一个包含数据库数据的 csv 文件,并使用 primefa 的 p:fileDownload 组件将其导出...

回答 2 投票 0

PrimeFaces 13 中的滚动条消失了

我正在领导我们的项目团队从 PrimeFaces 6 迁移到 PrimeFaces 13,它看起来就像用户放大得太近时出现的正常垂直滚动条,不再出现。 ...

回答 1 投票 0

通过 ui:param 将数组列表发送到 JSF ui:composition 模板

我知道我可以使用 ui:param 从基于模板构建的组合中传递字符串 像这样:http://www.mkyong.com/jsf2/how-to-pass-parameters-to-jsf-2-0-template-file/ 然后我就可以使用参数了...

回答 1 投票 0

如何将 JSF 托管 bean 属性传递给 JavaScript 函数?

我想知道如何将 JSF 托管 bean 属性传递给 JavaScript 函数。 像这样的东西: 函数实际化菜单(键){ #{linkedMenu.setKey(key)} } </</desc> <question vote="16"> <p>我想知道如何将 JSF 托管 bean 属性传递给 JavaScript 函数。</p> <p>类似这样的:</p> <pre><code>&lt;script&gt; function actualizaMenu(key){ #{linkedMenu.setKey(key)} } &lt;/script&gt; </code></pre> <pre><code>&lt;ul&gt; &lt;ui:repeat value=&#34;#{moduleList.modulos}&#34; var=&#34;entity&#34;&gt; &lt;li&gt; &lt;a onclick=&#34;actualizaMenu(#{entity.key})&#34;&gt;#{entity.nombre}&lt;/a&gt; &lt;/li&gt; &lt;/ui:repeat&gt; &lt;/ul&gt; </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>&lt;a onclick=&#34;actualizaMenu(#{entity.key})&#34;&gt;#{entity.nombre}&lt;/a&gt; </code></pre> <p>打印一个Java字符串变量,如<pre><code>&#34;foo&#34;</code></pre>,那么生成的HTML将如下所示</p> <pre><code>&lt;a onclick=&#34;actualizaMenu(foo)&#34;&gt;some name&lt;/a&gt; </code></pre> <p>但是,嘿,看,它代表一个名为 <strong><code>foo</code></strong> 的 JavaScript <pre>变量</pre>,而不是 JS 字符串值!所以如果你真的想最终成为</p> <pre><code>&lt;a onclick=&#34;actualizaMenu(&#39;foo&#39;)&#34;&gt;some name&lt;/a&gt; </code></pre> <p>那么您应该指示 JSF 准确生成该 HTML:</p> <pre><code>&lt;a onclick=&#34;actualizaMenu(&#39;#{entity.key}&#39;)&#34;&gt;#{entity.nombre}&lt;/a&gt; </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>&lt;h:commandLink&gt;</code></pre> 来代替。</p> <pre><code>&lt;h:commandLink value=&#34;#{entity.nombre}&#34; action=&#34;#{linkedMenu.setKey(entity.key)}&#34; /&gt; </code></pre> <p>如有必要,嵌套 <pre><code>&lt;f:ajax&gt;</code></pre> 以使其异步。</p> </answer> <answer tick="false" vote="1"> <p>我建议使用 jQuery 的事件绑定和元素上的数据属性来获得相同的结果(假设您使用 jQuery):</p> <pre><code>&lt;script&gt; function actualizaMenu(key){ /* Logic here ... */ } $(document).ready(function(){ $(&#39;.menuItem&#39;).click(function(){ var key = $(this).data(&#39;key&#39;); actualizaMenu(key); ); }); &lt;/script&gt; </code></pre> <p>...</p> <pre><code>&lt;ul&gt; &lt;ui:repeat value=&#34;#{moduleList.modulos}&#34; var=&#34;entity&#34;&gt; &lt;li&gt; &lt;a data-key=&#34;#{entity.key}&#34; class=&#34;menuItem&#34;&gt;#{entity.nombre}&lt;/a&gt; &lt;/li&gt; &lt;/ui:repeat&gt; &lt;/ul&gt; </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>

回答 0 投票 0

更新到 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。

回答 1 投票 0

查找NotSerializedException的原因:java.util.ArrayList$SubList

我正在使用 redisson 来保存我的应用程序的会话。该应用程序使用 JSF 2.3。 我试图找到 NotSerialized 异常的原因,但该应用程序仅记录 redisson 堆栈。基本上它并不指向...

回答 1 投票 0

Seam:在丰富的:dataTable 行中更新 h:inputText 中的数据时遇到问题

我正在尝试构建一个可编辑的表格来输入购买订单详细信息的值。我有一个绑定到列表的 rich:datatable,并且通过向列表添加元素来动态地将行添加到表中。恩...

回答 1 投票 0

使用 org.omnifaces.cdi.ViewScoped 时,我的 javax.servlet.Filter 在单个页面视图上同时接收 GET 和 POST

我的用于记录页面视图的 servletfilter 正在通过单个页面请求接收 GET 和 POST。我追溯到在页面支持 bean 上使用 Omnifaces ViewScope。 @命名 @org.omnifaces.cdi。

回答 1 投票 0

如何设置 h:panelGrid 中一行的高度

我想设置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. }

回答 3 投票 0

托管bean中View和Request范围之间的区别

视图范围是什么意思?谁能解释一下,以便我可以理解它与请求范围有何不同?

回答 1 投票 0

将 JPA 与 JBoss EAP 一起使用时出现错误“行已被另一个事务更新或删除”

我遇到一个问题,无法对 JSF 表单的任何字段执行第二次连续更新。表单最初加载时默认禁用所有字段。

回答 1 投票 0

无法覆盖 primefaces 资源的默认缓存控制

我正在 Jakarta EE、Primefaces 12 和 OpenLiberty 中开发一个应用程序。当我加载应用程序时,primefaces资源(js和css文件),主要包含URL“jakarta.faces.resou...

回答 1 投票 0

JSF 中资源 API 的 el 表达式嵌套

我想先计算内部 el,然后使用资源 API 计算路径。 我试过了<...

回答 1 投票 0

PrimeFaces 13.0 在浏览器会话开始时显示“无效请求”

当我们通过浏览器(Chrome 版本 116.0.5845.141)访问我们的应用程序时,打开浏览器后,第一次尝试总是会重定向到仅显示消息“Inva...

回答 1 投票 0

JSF 中的页面卸载事件处理

JSF 2.0 有没有办法处理页面 unLoad 事件?我想在用户离开特定页面时执行一些数据重置?

回答 1 投票 0

数据表中的 JSF 命令按钮 id

如何在数据表中添加命令按钮? 如何在数据表中添加命令按钮? <hx:dataTableEx value="#{searchData.searchFriends}" var="s"> <hx:columnEx> <f:facet name="header"> <h:outputText value="First Name" /> </f:facet> <hx:requestLink action="#{pc_Search.doAddFriendAction}"> <h:outputText value="Add as Friend" /> <f:param name="friendId" value="#{s.memberId}" /> </hx:requestLink> </hx:columnEx> </hx:dataTableEx> 在后台获取数据 String friendId = (String)getRequestParam().get("friendId"); 但是一旦我将请求链接更改为命令按钮,friedId = null?知道如何使用命令按钮传递值吗? 将数据表值包装在 DataModel 中。然后通过DataModel#getRowData()即可获取选中的行。 public class Bean { private List<Friend> friends; private DataModel friendsModel; public Bean () { friends = getItSomehow(); friendsModel = new ListDataModel(friends); } public void addAsFriend() { Friend selectedFriend = (Friend) friendsModel.getRowData(); // ... } } 与 <h:dataTable value="#{bean.friendsModel}" var="friend"> <h:column> <h:commandButton value="Add as friend" action="#{bean.addAsFriend}" /> </h:column> </h:dataTable> 应该与 IBM Faces Client Framework(那些 hx: 组件)一起良好地工作。 不是我想要的,所以我的问题是颤振

回答 2 投票 0

PrimeFaces 多个数据表和行选择事件

我有一个动态数据表列表,我需要为每个表的单行启用行选择。 下面的代码仅在用户选择最后一个数据表的一行时才有效,也许是因为...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.