Tag: facelets

如何在JSF数据表中获取选定的行索引?

我在index.xhtml上有一个数据库 我的豆子: @ManagedBean(name=”IndexBean”) @ViewScoped public class IndexBean implements Serializable { private HtmlDataTable datatableBooks; public HtmlDataTable getDatatableBooks() { return datatableBooks; } public void setDatatableBooks(HtmlDataTable datatableBooks) { this.datatableBooks = datatableBooks; } public void editBook() throws IOException{ int index = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(“index”).toString()); System.out.println(index); } } 我的问题是,即使单击不同的编辑按钮,我总是在服务器日志中获得相同的索引。 想象一下,有一个集合提供给数据表。 我没有在bean中表明过。 如果我将范围从ViewScope更改为RequestScope,它可以正常工作。 @ViewScoped会出现什么问题? 提前致谢 :) 编辑: public void editBook(ActionEvent ev) throws IOException{ […]

h:commandButton多个动作:下载文件并渲染ajax表

我目前有2个命令按钮和一个列表框。 根据列表框选择,生成的结果可以显示在可下载的文件中,也可以呈现为HTML表格。 getFile()代码基于BalusC的PDF处理教程 ,而getTable()设置了resultTable 。 到目前为止,这两个按钮都正常工作 但是,我想将两个动作组合成一个按钮。 当我用一个触发两个动作的按钮测试它时,没有任何反应(没有文件保存为对话框或表格渲染)。 这是因为一个动作是ajax还是因为另一个动作是用facesContext.responseComplete();完成的facesContext.responseComplete(); ? getBoth() { getTable(); getFile(); } 另外我想要一个复选框,如果选中它,则保存为弹出对话框并呈现表格。 如果未选中,则仅渲染表。

输入String的NumberFormatException

我在JSF支持bean中有以下方法: public List getTopMemebers(){ return rentDAO.findByMonthAndYear(MonthReport, YearReport); } 我在数据表中显示: … 但我得到以下例外: SEVERE: Error Rendering View[/admin/index.xhtml] java.lang.NumberFormatException: For input string: “rentid” at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:449) at java.lang.Integer.parseInt(Integer.java:499) at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:375) at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:195) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72) at com.sun.el.parser.AstValue.getValue(AstValue.java:116) at com.sun.el.parser.AstValue.getValue(AstValue.java:163) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219) at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178) at javax.faces.component.UIOutput.getValue(UIOutput.java:168) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:338) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164) at […]

JSF和自动重载xhtml文件

我使用JRebel,Spring,JSF Mojarra 2.0.3和WebLogic 10.3热重新加载XHTML文件时遇到了一些问题。 JRebel成功地在/ WebContent下重新加载常规Java类和js / css文件,而不是JSF的.xhtml文件。 需要完整的重新发布才能在服务器上更新xhtml文件。 通过反复试验,我终于通过向web.xml添加一些facelets参数并创建自定义ResourceResolver来实现它,如本博客文章中所述 。 但是,我想知道为什么这有效,更具体地说: 为什么需要自定义ResourceResolver? 是不是JRebel应该通过监视xhtml文件所在的/ WebContent来处理这个问题? 我猜它与Facelets / JSF通过FacesServlet编译xhtml到servlets(?)有什么关系,JRebel无法检测到它?

为什么不对JSF页面进行预编译(至少部分),而是在每次构建视图时进行解析,评估?

我不知道它是否真实,但据我所知,我相信,JSF EL和xhtml页面不是预编译的,只是在需要时使用,而是每次查看时都会对它们进行解析,评估和编译建成。 我不明白为什么这样做! 为什么不只是解析和编译它一次,好吧至少部分,渲染一些组件可能依赖于动态获取的变量,因此它们可能会在稍后呈现,但为什么延迟页面上的所有组件? 无论最大值可以预先编译并准备好使用,为什么不在部署应用程序时执行此操作? 这不会改善页面的渲染时间吗?

JSTL c:forEach导致@ViewScoped bean在每个请求上调用@PostConstruct

我再次看到@PostConstruct每次都在触发,即使没有使用绑定属性。 看到这段代码: – Facelet Title 这是JSF中最简单的bean: – package managedBeans; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; @ManagedBean(name=”TestBean”) @ViewScoped public class TestBean implements Serializable { private List listItems; public List getListItems() { return listItems; } public void setListItems(List listItems) { this.listItems = listItems; } public TestBean() { } @PostConstruct public void […]

如何在Facelets页面中访问会话属性

我已经使用JSF和PrimeFaces实现了一个登录表单。 我在PrimeFaces展示网站上使用了这个例子 。 我有一个Facelets页面来显示dataTable。 现在我需要将上面的登录表单与此表页面集成。 所以我在LoginBean.java中添加了几行来处理会话属性。 if (username.equals(getUsername_db()) && password.equals(getPassword_db())) {//valid user and paward loggedIn = true; msg = new FacesMessage(FacesMessage.SEVERITY_INFO, “Welcome”, getUsername_db()); //new lines FacesContext context2 = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession) context2.getExternalContext().getSession(true); session.setAttribute(“user”, username); //end of new lines … 如果用户没有登录,我需要隐藏dataTable中的列。现在我的问题是,如何在Facelets页面中访问会话属性?

如何在多次战争之间共享一个jsf错误页面

我正试图在多次战争之间共享一个错误页面(error.xhtml)。 它们都是一个大耳朵应用程序,并且都使用一个常见的jar库,我想把它放在这里。 错误页面应使用web.xml或更好的web-fragment.xml,并将声明为标准java ee错误页面。 实际EAR结构: EAR EJB1 EJB2 WAR1 (using CommonWeb.jar) WAR2 (using CommonWeb.jar) WAR3 (using CommonWeb.jar) 只是将错误页面放在META-INF / resources下面是行不通的,因为它不是资源。 我想尽可能少地配置每个war文件。 我正在使用Glassfish 3.1,但我希望尽可能使用Java EE 6标准。

如何删除Facelets中的HTML注释?

我想在交付给最终用户之前从我的facelets中删除所有HTML注释。 是否存在任何标准方法?