JavaServer Faces(JSF)是一种模型 - 视图 - 展示器框架,通常用于创建基于HTML表单的Web应用程序。使用标准组件和渲染工具包,可以使用Facelets或JSP标记定义有状态HTML视图,并通过支持bean连接到模型数据和应用程序逻辑。
所以我有一个 JSF 应用程序。如果我提交表单,当我刷新页面时它会重新提交。我当然不希望这样。 索引.xhtml: [...] 所以我有一个 JSF 应用程序。如果我提交表单,当我刷新页面时它会重新提交。当然我不想要这样。 索引.xhtml: [...] <h:form > <h:outputText value="Form"/><br/> <h:inputText label="first" value="#{example.newExample.firstWord}" autocomplete="off"></h:inputText> <h:commandButton value="click" actionListener="#{example.NewExample()}"> </h:commandButton> </h:form> [...] 运行的方法: public void NewExample(){ pfDB.InsertNewExample(NewExample); NewExample.setFirstWord(null); NewExample.setSecondWord(null); } 所以每次我提交表单后刷新index.xhtml,NewExample()就会运行。 问题确实出在重新提交表格上。但浏览器(opera)没有显示警报。 我通过添加修复了它 FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml"); 在我的职能中 尝试通过ajax提交: <h:commandButton value="click" actionListener="#{example.NewExample()}"> <f:ajax /> </h:commandButton> 您可能需要渲染一些组件。
从 WebSphere 迁移到 Springboot 的 JSF 应用程序会在导航期间重新加载同一页面,而不是加载单击的页面,而不会出现任何控制台错误
将 JSF 项目从 WebSphere 迁移到 Spring Boot(包括将其从 WAR 转换为 JAR)后,应用程序开始运行。然而,我们遇到了间歇性问题,其中...
JSF 3.0 项目抛出 java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
我在本地计算机上使用 glassfish6.2.3。如果我将这些行添加到 web.xml Faces Servlet javax.fa...
如何在@FacesConverter中注入@EJB、@PersistenceContext、@Inject、@Autowired等?
如何在 @FacesConverter 中注入 @EJB、@PersistenceContext、@Inject、@AutoWired 等依赖项?在我的具体情况下,我需要通过 @EJB 注入 EJB: @FacesConverter 公开课
PrimeFaces <p:tabView> 在 Wildfly 中使用动态=“true”中断 <p:ajax> – JBoss EAP 正在工作
我们有一个复杂的 Web 应用程序,通常通过 RedHat JBoss EAP 7.4 提供服务,我们尝试将其与 Wildfly 26.1.3 一起使用(最后一个在 javax → jakarta 之前)。对于 UI,我们使用 Primefaces 13.0.8 (...
加载主题时出错,找不到“primefaces-start”库的“theme.css”资源
当我在 Tomcat 服务器上运行我的项目时,它显示以下错误: 加载主题时出错,找不到“primefaces-start”库的“theme.css”资源 这是堆栈跟踪: javax.servlet。
jQuery 版本增加后,Primefaces 页面加载缓慢
我之前的 Primefaces 版本是 6.0。我将其升级到 Primefaces 10.0(在其网站上迁移部分的帮助下)。Clean&Build 和 Debug 中没有错误。虽然没有
如何在不向服务器发送数据的情况下关闭表单内的模式窗口并防止页面重新加载?
我有一个带有 javaee 和 primefaces 的网络,并且我已将 bootstrap 集成到该项目中。 我知道使用 p:dialog 我可以执行与引导模式窗口相同的行为,但我实现了
如何将 primefaces 添加到我的 jsp 和 servlet 导航栏
我几乎所有的项目都在 jsp 和 servlet 中,现在我想将 primefaces 中的页面添加到我的导航栏...无论我尝试过什么,它都不会将其添加到我的项目中。 ..我是吗
我有一个树表和两个按钮: 一个用于倒塌树和 另一个用于扩展, 但它们不起作用。在支持 bean 上,我做了 root.setExpanded(true);和 root.setExpanded(false);乙...
如何查看服务器使用的 EL 版本是什么? 我正在运行 Websphere 7 。 EL 类位于 j2ee.jar 中,清单如下。 清单版本:1.0 Ant 版本:Apache Ant 1.6.5 创建者:2....
如何通过javascript使用costum过滤器(selectCheckboxMenu)保存和恢复primefaces数据表的过滤器状态?
我有一个 primefaces 数据表,想使用 selectCheckboxMenu 对其进行过滤 我有一个 primefaces 数据表,想使用 selectCheckboxMenu 对其进行过滤 <p:column filterBy="#{entity.category}" headerText="Category" filterMatchMode="in"> <f:facet name="filter"> <p:selectCheckboxMenu label="Category" onchange="PF('datatable').filter()"> <f:selectItems value="#{bean.categoryOptions}"/> </p:selectCheckboxMenu> </f:facet> <h:outputText value="#{entity.category}" /> </p:column> 过滤器本身效果很好。我可以过滤数据表,并且在重新加载站点后也只有过滤后的值。 我的问题是重新加载后数据表的过滤状态消失了。我看到过滤器有效,但我在数据表的标题中没有看到过滤器的值。 带有数据表的表单: <h:form id="form"> <p:dataTable var="entity" value="#{bean.list}" widgetVar="datatable" filterEvent="enter" id="datatable" lazy="true"> <p:ajax event="filter" process=":form:filters" onstart="saveDatatableState()"></p:ajax> ... columns ... </p:dataTable> <h:inputHidden id="filters" value="#{bean.filters}" /> <h:inputHidden id="page" value="#{bean.page}" /> <h:inputHidden id="npages" value="#{bean.npages}" /> <h:inputHidden id="scrollPos" value="#{bean.scrollPos}" /> </form> <script src="js/DataTableFilterStorage.js" /> <script> $(function(){ loadDatatableState(); }); </script> 过滤器值通过 JavaScript 保存和加载。这些方法位于文件 DataTableFilterStorage.js 中: function saveDatatableState(){ var filterNormal = $('form .ui-column-filter').serialize(); var filterCustomText = $('form .ui-column-customfilter .ui-inputfield').serialize() if (filterNormal != "" && filterCustomText != "") { $(fFilter).val(filterNormal + '&' + filterCustomText); } else { $(fFilter).val(filterNormal + filterCustomText); } var page = $('.ui-paginator-page.ui-state-active:first').text(); if(!page) page = 0; var scrollPos = $('body').scrollTop(); if(!scrollPos) scrollPos = 0; $(#page).val(page); $(#npages).val($('#yui-pg0-0-rpp').val()); $(#scrollPos).val(scrollPos); } function loadDatatableState(){ var filters = $(#filters).val().split('&'); if (filters != ""){ for(var i = 0; i < filters.length; i++){ var f = filters[i].split("="); if(f.length != 2 || f[1].length < 1) continue; $('#'+f[0].replace(/%3A/g, '\\:')).val(decodeURIComponent(f[1]).replace('+', ' ')); //For Dropdown-Menues $('#'+f[0].replace(/%3A/g, '\\:') + ' option:selected').val(decodeURIComponent(f[1]).replace('+', ' ')); } } var handler = function(e, xhr, settings) { if($(#page).val().length > 0 && $(#page).val() != 1){ var p = $('a.ui-paginator-page[page='+$(#page).val()+']:first'); if(p.length > 0){ p.attr('id', 'currentPage'); var event = document.createEvent("HTMLEvents"); event.initEvent("click", true, true); document.getElementById('currentPage').dispatchEvent(event); } } $(#form).unbind('ajaxComplete', handler); }; $(#form).ajaxComplete(handler); }; 正常文本字段、下拉菜单(单选选项)和输入掩码中的过滤器值已正确保存和加载,但 selectCheckboxMenu 中的过滤器值却未正确保存和加载。 过滤器未正确保存的原因是$(#filter).val($('form .ui-column-filter').serialize());行。它仅保存类型为“ui-column-filter”的过滤器。 selectCheckboxMenu 中的过滤器的类型为 ui-column-customfilter。我尝试通过将行更改为 $(#filter).val($('form .ui-column-customfilter').serialize()); 来选择值,但它不起作用。 该解决方案必须在 IE 11 下工作。我使用的是 Primefaces 5.2 和 JSF 2.0。 您可以使用自 Primefaces 6.1 以来实施的新 multiViewState 功能 来保持 dataTable 状态。
com.sun.faces.context.FacesContextImpl.assertNotReleased 处的 java.lang.IllegalStateException
如果我按下“提交”按钮,错误消息将被抛出到服务器日志中 登录.xhtml ...
我有 PrimeFaces 标签 selectCheckboxMenu。 我有 PrimeFaces 标签 selectCheckboxMenu。 <p:selectCheckboxMenu dynamic="true" filter="true" filterMatchMode="startsWith" label="Cities" style="width: 15rem" panelStyle="width: 15rem" scrollHeight="250" value="#{checkboxView.selectedCities}"> <f:selectItems value="#{checkboxView.cities}"/> </p:selectCheckboxMenu> 我正在努力实现这一点: 当我打开此列表时,如果没有选中其他复选框,则仅选中顶部复选框; 当我选中列表中的一个复选框时,顶部的复选框将取消选中; 我认为 js 可以帮助我,我试图在文档中找到一些东西,但找不到。 您期望的结果的第二部分默认按预期工作 iirc。关于前面的内容,如果您希望在打开菜单后选择列表中的第一项(如果我理解正确的话),请使用方法toggleItem()并将其与js函数结合起来。
我应该如何以及何时从 JSF dataTable 的数据库加载模型
我有一个数据表如下: 我想用从服务方法获得的数据库中的集合填充它,以便它立即
嘿,我被这个问题困扰了很长时间,找不到解决方案。 现在,假期结束后,问题仍然在等着我,我不知道该做什么,也没有动力。我...
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")
我想捕获当前页面并将其发送到将其转换为 pdf 的应用程序。 这就是我正在使用的: FacesContext facesContext=FacesContext.getCurrentInstance();
如何将 JavaScript Blob 上传到 JSF 而不将其转换为 Base64 字符串?
我在 JS 中将音频录制为 blob。如何上传它而不将其转换为 Base64 字符串并通过 或 发送?
如何上传JavaScript blob而不将其转换为base64字符串?
我已经在js中将音频录制为blob,那么如何在不将其转换为base64字符串并通过或发送的情况下上传它?