Tag: jsf

JSF中的最佳实践:模型,操作,getter,导航,phaselisteners

我已经进入了一个重新考虑JSF实现的项目。 现有代码没有遵循正确的JSF标准。 为了实现这一点,我正在学习JSF中的所有概念(我已经掌握了JSF的实验)。 具体来说,我想问一下我的想法。 在MVC模式中,JSF中的模型组件是什么? 它是Managed Bean吗? 在动作方法中编写业务逻辑是个好主意吗? 我已经看过用行动方法编写的数百行。 你认为我们可以在getter方法中编写任何逻辑吗? 在JSF生命周期中调用getter或setter的次数。 编写faces-config.xml的常规方法是什么? 我在一个文档中读到它说好的做法是将bean的托管bean声明和导航案例一起编写。 它会更具可读性。 写入阶段监听器会影响响应时间。 例如,我正在编写一个逻辑来解析PhaseListener中的请求参数并执行一些逻辑。 对此有什么建议吗? 请回答上述问题。 如果我对答案很清楚,那么我会提出更多问题。

JSF:嵌套ui:repeat中的值绑定

我对标签有一个奇怪的问题。 即使对于我非常简单的示例,嵌套重复组件内的值绑定也无法按预期工作。 我有一个像这样的简单小面孔: 和沙盒类: @Component @Scope(“request”) public class Sandbox { public static class Row { private List columns = Arrays.asList(new Column(), new Column()); public List getColumns() { return columns; } } public static class Column { private boolean value; public void setValue(boolean value) { this.value = value; } public boolean getValue() { return this.value; } […]

身份validation后以编程方式添加角色

我有以下JSF 2.1登录表单,在Glassfish 3.1中运行 以及支持bean。 public String login() throws IOException, LoginException { log.debug(“Trying to login with username ” + username); HttpSession session = getRequest().getSession(true); try { getRequest().login(username, password); // if OK, add Roles ???????? ………………. } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } log.debug(“USER principal === ” + getRequest().getUserPrincipal()); return “home”; } […]

如何在JSF中减少javax.faces.ViewState

减少JSF中viewstate隐藏字段大小的最佳方法是什么? 我注意到我的视图状态大约是40k,这会下降到客户端并在每次请求时返回到服务器,并且响应通常会发送到服务器,这对用户来说是一个显着的减速。 我的环境JSF 1.2,MyFaces,Tomcat,Tomahawk,RichFaces

JSF Managed Bean自动创建?

是否可以自动创建JSF托管bean? 例如,我有几个会话范围的bean。 有时需要在代码中访问这些实例(而不仅仅是在JSF中),这可以通过以下方式完成: PageBean pageBean = (PageBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“pages”); 但是,如果没有访问过调用’#{pages}’的页面,则会解析为null …无论如何都要让JSF在范围’开始’时创建一个bean? 那么在这种情况下,理想情况下,当用户会话开始时,’pages’会立即在会话中实例化bean吗?

如何部分重新加载ui:重复?

我们有一个基于JBoss 7.1构建的Web应用程序,带有JSF2和Primefaces 3.3。 在我们的一个页面上,有一个ui:repeat显示10个项目; 然后用户可以点击某种“显示更多”按钮,并通过ajax显示另外10个项目。 用户可以单击“显示更多”按钮,直到没有更多项目显示。 注意:这不是分页,每次单击“显示更多”时显示的列表会变长。 实际上,当用户点击按钮时,服务器返回旧项和新项,而JSF的客户端每次都必须通过jQuery重建整个中继器。 我们希望找到一个更好,更高效的解决方案。 旧项目在n-1和n调用之间不会发生变化,因此如果服务器只能通过ajax返回10个新项目,效率会更高。 在JSF2中有可能吗? JSF似乎并不真正符合这种递归渲染。 唯一可以帮助我们的组件是TreeNode组件,但它看起来有点像黑客: – /

使用p:calendar在jsf h:datatable中进行交叉字段validation

我注意到这个问题被问到了,但是没有正确回答。 我有一个数据表,有两列开始日期和结束日期 。 两者都包含primefaces p:日历控件。 我需要确保对于每一行,column1中的日期不在column2中的日期之后。 我想把它绑定到JSFvalidation框架,但我遇到了麻烦。 我已经尝试将datatable标记为rowStatePreserved =“true”,这允许我获取值,但是仍然存在错误,因为当它失败时,第一行中的所有值都会覆盖所有其他值。 我做错了什么,或者我应该采用完全不同的策略? xhtml代码 Start End validation码 public void doCrossFieldValidation(ComponentSystemEvent cse) { UIData eventsDaysStable = (UIData) cse.getComponent().findComponent(“eventDaysTable”); if (null != eventsDaysStable && eventsDaysStable.isRendered()) { Iterator startDateCalendarIterator = eventsDaysStable.findComponent(“eventDayStartColumn”).getChildren().iterator(); Iterator endDateCalendarIterator = eventsDaysStable.findComponent(“eventDayEndColumn”).getChildren().iterator(); while (startDateCalendarIterator.hasNext() && endDateCalendarIterator.hasNext()) { org.primefaces.component.calendar.Calendar startDateComponent = (org.primefaces.component.calendar.Calendar) startDateCalendarIterator.next(); org.primefaces.component.calendar.Calendar endDateComponent = (org.primefaces.component.calendar.Calendar) endDateCalendarIterator.next(); Date […]

我应该选择哪个框架 – Seam,Wicket,JSF或GWT?

我正在讨论是否使用Seam,Wicket,JSF或GWT作为Java项目中表示层的基础。 我根据就业市场考虑因素,技术的新颖性以及其他SO用户的建议,将我选择的Java Web框架缩小到这个子集。 在决定这些因素时,我应该考虑哪些因素?

托管bean和会话bean之间的区别

说我有一个实体课,汽车。 @Entity public class Car 我的IDE让我自动从实体类生成会话bean,所以我最终得到了一个CarFacade @Stateless public class CarFacade 我也可以生成JSF Managed bean @ManagedBean @RequestScoped public class RegistrationController 我可以理解Entity类和其他bean之间的有意义的区别,但是无状态会话bean和托管bean之间有什么区别? 我读到一个无状态会话bean用于实现在实体上运行的业务逻辑,而托管bean用于与基于Web的前端交互,通过在托管bean上调用网页方法,并使用托管bean调用会话bean上的业务方法。 因此在我的示例中,RegistrationController将具有网页将调用的+ register(String carRegistration)方法。 RegistrationController将依次实例化Car并在会话bean上调用+ create(Car car),这会持久化它。 它是否正确?

是否可以提交从WEB-INF中的JSF页面位置呈现的表单?

我正在开发的基于JSF 2.2 Web的应用程序使用位于WEB-INF目录中的各种错误页面,并在基于web.xml文件中的配置遇到HTTP错误或Javaexception时显示。 在某些错误页面上,我想要包含一个表单,该表单允许用户报告问题并包含在调查问题(例如请求URI和错误消息)时有用的各种属性。 我遇到的问题是,当用户尝试提交失败的表单时,找不到页面错误,因为HTTP post请求方法正在使用WEB-INF目录中的页面的URI而不是失败的原始页面因此将用户发送到错误页面。 我知道WEB-INF中的文件不可公开访问,并且理解这是上述问题的根本原因。 在WEB-INF目录中定位错误页面的合理性是防止用户直接访问这些页面并通过我试图实现的表单报告错误的问题。 我的问题是询问是否有任何其他方式允许最终用户提交一个表格(在这种情况下是一个错误报告),该表格已经从WEB-INF目录中的页面呈现,或者是唯一的解决方案来移动错误页面到WEB-INF目录之外的某个地方? 如果这是不可能的,还有其他选择来实现类似的结果吗?