Facelets是JavaServer Faces框架的基于XML的视图技术。您不需要在Facelets被“巧合地”用作视图技术的每个JSF问题上使用此标记。仅在您对Facelets自己的<ui:xxx>标记有特定问题时才使用此标记。
Web 应用程序中有两个页面 page1 和 page2。 页面 page1 是基于 .xhtml 文件的 Facelet,而 page2 由 servlet 生成。 我们假设 page1.xhtml 如下所示: Web 应用程序中有两个页面 page1 和 page2。 页面 page1 是基于 .xhtml 文件的 Facelet,page2 由 servlet 生成。 我们假设 page1.xhtml 看起来像这样: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="jakarta.faces.html" xmlns:f="jakarta.faces.core" > <h:head> <title>TODO supply a title</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> </h:head> <h:body> <h:button outcome="yolo" value="move on"/> </h:body> </html> 为了简单起见,让 page2 从以下 servlet 生成: package tests; import jakarta.inject.Inject; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(urlPatterns = "/abc") public class StorageSrv extends HttpServlet { @Inject private Storage storage; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("abc"); } } 我还在faces-config.xml中添加了导航规则,如下: <navigation-rule> <from-view-id> /flexible.xhtml </from-view-id> <navigation-case> <from-outcome> yolo </from-outcome> <to-view-id> /abc </to-view-id> </navigation-case> </navigation-rule> 如何从 page1 重定向到 page2 ? 目前,导航规则添加了 .xhtml 扩展名,因此通过单击 page1 上的“继续”按钮,我得到 404。 显然,只需将 servlet 映射到带有 .xhtml 扩展名的路径即可完成这项工作。 例如: @WebServlet(urlPatterns = "/abc.xhtml")
错误解析/page.xhtml:错误跟踪[行:42]实体“nbsp”被引用,但未声明
我想在 JSF 页面中使用不间断空格。我知道,在纯 HTML 中,我可以使用 来实现此目的,并且效果很好。但是,当我将这些放入 Facelets 页面时,就会出错...
我有一个 MyFaces Facelets 应用程序,其中页面编码有点粗糙。不管怎样,它是用 Eclipse 开发的,用 Ant 构建的,在 Tomcat 2.0.26 中运行得很好。到目前为止,一切都很好。 现在,我会...
我已经在 IntelliJ Idea Ultimate (Maven) 中为 Java Enterprises 的大学项目设置了 Jakarta EE 项目,并且还可以在浏览器中输出 index.xhtml(通过 Tomcat 8.5.87)。我是另一个...
我有一个 id 为 X 的 ,我想从其内容 X_content 中删除填充,为面板内容生成的 HTML 是: 我有一个 <p:panel>,id 为 X,我想从其内容中删除填充 X_content 为面板内容生成的 HTML 是: <div id="X_content" class="ui-panel-content ui-widget-content"> 并且该元素出现在 chrome 开发者工具中以具有填充: padding:0.5em 1em; 我制作了一个嵌入式样式表来覆盖 primefaces 中的样式表,如下所示: <h:head> <style> .ui-panel-content, .ui-widget-content{ padding:0px; } </style> </h:head> 但是我没有工作,填充仍然存在,有人可以帮助我吗? 您的 CSS 选择器 .ui-panel-content, .ui-widget-content { ... } 基本上意味着:“选择具有 ui-panel-content 或 ui-widget-content 类的所有元素”。 但是,填充是通过此 CSS 选择器在 PrimeFaces 默认 CSS 中定义的 .ui-panel .ui-panel-content { ... } 基本上意味着 “选择具有 ui-panel-content 类的所有元素,该类是具有 ui-panel 类的元素的子元素”,这是根据 CSS 级联规则 更强的选择器。因此,它的优先级高于 CSS 选择器。这与样式类的声明顺序无关(仅当选择器具有相同强度时声明顺序才重要)。 当覆盖 PrimeFaces 默认 CSS 时,您应该提供一个“至少”相同强度或更强的选择器。在您的特定情况下,如果您打算全局应用样式,只需使用相同的选择器: .ui-panel .ui-panel-content { padding: 0; } 请注意,当在 <style> 中使用 <h:head> 时,它仍然会被 PrimeFaces 默认 CSS 覆盖,因为它会自动包含在头部末尾。而是将 <style> 移至 <h:body>,或者更好的是,将其放入自己的 CSS 文件中,通过 <h:houtputStylesheet> 将其包含在 <h:body> 内。 另请参阅: 如何使用自定义样式覆盖默认的 PrimeFaces CSS? CSS 选择器语法 我无法真正理解这里的答案,它对我不起作用。 但这有效。 :host { &::ng-deep { .p-panel-content { padding: 0; } } }
我想在交付给最终用户之前从我的 Facelet 中删除所有 HTML 注释。是否存在任何标准方法?
我在使用 JRebel、Spring、JSF Mojarra 2.0.3 和 WebLogic 10.3 热重载 Facelets 文件时遇到了一些问题。 JRebel 成功重新加载 /WebContent 下的常规 Java 类和 js/css 文件,...
我正在开发一个应用程序,我想在其中包含来自流的动态 XHTML 内容。为了处理这个问题,我编写了一个标记处理程序扩展,它将动态 XHTML 内容转储到输出组合...
为什么 <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...有意义吗?
通过 ui:param 将数组列表发送到 JSF ui:composition 模板
我知道我可以使用 ui:param 从基于模板构建的组合中传递字符串 像这样:http://www.mkyong.com/jsf2/how-to-pass-parameters-to-jsf-2-0-template-file/ 然后我就可以使用参数了...
加载页面时如何获取硬编码值? actionCode f:param 总是返回空值。 如何在页面加载时获取硬编码值? actionCode f:param 总是返回空值。 <f:viewAction action="#{myFaces.onLoad}"> <f:param name="actionCode" value="123" /> </f:viewAction> public void onLoad() { // Unable to get actionCode, always return empty logger.debug("FacesRequestParameterMap: {}", FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()); }
我想在我的*.xhtml页面上放一个packman游戏。(我使用jsf 2和primefaces 3.5)然而,当我在xhtml中 "翻译 "html页面时,我在这个脚本中得到一个错误。 var ...</root>
如何通过<ui:param>的<ui:include>来传递bean actionlistener方法。
我使用的是 来加载一个数据表(我使用Primefaces)。我想使用
将selectOneMenu复杂对象作为选中的项目进行检索。
我开始使用JSF(Mojarra 2.2和Glassfish 4),目前正在实践一个Web应用程序,它的工作是在DB中存储客户和他们的订单。当创建一个新的订单时,有一个功能是......。
我的声明正在从我的JSF页面中删除,这很混乱。多次问过这个问题:JSF DocType中的HTML doctype声明是...
更新Primefaces .xhtml文件后,先前保存的Stacktrace错误
在我的项目中,我将Java EJB + Primefaces与Tomcat 7.11一起使用。编辑器是NetBeans。我的项目运行良好,直到我意外地将一些.xhtml文件移动到另一个文件夹并保存。移动文件后...
@@希望通过URL将参数传递给CDI @Named bean
如果我不能将@ManagedProperty注释与@Named一起使用,因为@ManagedProperty在CDI(?)中不起作用,那么如何将URL中的参数传递给Facelets客户端?在我的代码中,我想通过...
。xhtml文件中的更改未反映在浏览器中,需要重新启动和构建
如果我在.xhtml文件中进行更改,则更改不会反映在浏览器的屏幕上。为了使其正常工作,我必须每次都重新启动服务器。在我看来这很笨拙。我有...
Opening Facelets页面显示“此XML文件似乎没有与之关联的任何样式信息。”
我正在尝试在另一台计算机上的Apache Tomcat上运行我的Eclipse JSF项目。我在本教程中创建了一个WAR文件。但是,当我部署WAR并在Firefox中打开Facelet页面时,我得到...