Tag: jsf

通用JSF实体转换器

我正在编写我的第一个Java EE 6 Web应用程序作为学习练习。 我没有使用框架,只有JPA 2.0,EJB 3.1和JSF 2.0。 我有一个自定义转换器将存储在SelectOne组件中的JPA实体转换回实体。 我正在使用InitialContext.lookup来获取对会话Bean的引用以查找相关的实体。 我想创建一个通用的实体转换器,所以我不必为每个实体创建一个转换器。 我以为我会创建一个抽象实体并让所有实体扩展它。 然后为抽象实体创建自定义转换器,并将其用作所有实体的转换器。 这听起来合理和/或切实可行吗? 是不是有一个抽象的实体,只是一个转换器来转换任何实体更有意义? 在那种情况下,我不确定如何获得对相应会话Bean的引用。 我已经包含了我当前的转换器,因为我不确定我是否以最有效的方式获得了对Session Bean的引用。 package com.mycom.rentalstore.converters; import com.mycom.rentalstore.ejbs.ClassificationEJB; import com.mycom.rentalstore.entities.Classification; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import javax.faces.convert.FacesConverter; import javax.naming.InitialContext; import javax.naming.NamingException; @FacesConverter(forClass = Classification.class) public class ClassificationConverter implements Converter { private InitialContext ic; private ClassificationEJB classificationEJB; […]

在会话到期之前调用方法

我的webapp有登录用户。 暂停时间。 在会话到期之前,我想执行一个方法来清理一些锁。 我已经实现了一个sessionListener但是一旦我到达public void sessionDestroyed(HttpSessionEvent event) ,会话就已经消失了,我需要一些来自它的数据,所以我想执行一个方法(需要会话活动并且能够访问FacesConfig.getCurrentInstance() )在会话实际到期之前。 我怎样才能做到这一点? 有任何想法吗? 这是我的会话监听器: public class MySessionListener implements HttpSessionListener { private static final Logger log = LoggerFactory.getLogger(MySessionListener.class); public MySessionListener() { } public void sessionCreated(HttpSessionEvent event) { log.debug(“Current Session created : ” + event.getSession().getId()+ ” at “+ new Date()); } public void sessionDestroyed(HttpSessionEvent event) { // get the […]

在JSF / JSP EL和Javascript中连接字符串

我在使用EL和javascript函数时遇到了麻烦(JSF 1.2,Facelets,Richfaces 3.3.0GA)。 我有一个包含另一个组成的页面: 在我的ui:composition我想将prefix附加到每个id。 例如: 这没问题。 但问题出现的时候我想访问函数中的组件,如oncomplete我无法让它正确地连接字符串。 例如 oncomplete=”#{rich:component(‘#{prefix}_examinationPanel’)}.show();” 我已尝试使用fn:join ,但它不执行该函数,因为它在发现“#”字符时会抱怨错误。 例如: oncomplete=”#{rich:component(fn:join(#{prefix},’examinationPanel’))}.show()” 投 SEVERE: Servlet.service() for servlet Faces Servlet threw exception org.apache.el.parser.ParseException: Encountered “fn:join( #” at line 1, column 33. Encountered “fn:join( #” 如果我用括号或#和括号括起来,会出现不同的错误。 我究竟做错了什么? 另一个问题,在条件命令中 oncomplete=”#{a}?#{b}:#{c}” 如果真或假,我如何“分组”能够执行更多操作? 举例如下: oncomplete=”#{a}?(#{b}#{f}):(#{c}#{d}#{e})” 我尝试过括号,但没有正确解析它。 提前致谢。

如何以编程方式将文件上传到网站?

我必须将文件上传到服务器,该服务器仅显示带有文件上传按钮的jsf网页(通过http)。 我必须自动化一个进程(作为java独立进程完成),它生成一个文件并将文件上传到服务器。然后,必须上传文件的服务器不提供FTP或SFTP。 有没有办法做到这一点? 谢谢,里奇

什么是非范围bean以及何时使用它?

有人可以解释什么是无范围和目的吗? 假设我有一个豆子 request scope as r1 session scope as s1 application scope a1 并且说我没有将范围bean n1注入到上述每个范围中,然后我发现当实例化其父bean [r1 / s1 / a1]时,n1将被实例化为每个父bean。 a1中的无范围bean在a1中始终可用,因为a1是appl范围。 s1中的无范围bean只有在s1未被销毁且s1再次创建时才可用,n1将被实例化并可供其使用。 这是对的吗? 以及使用它的目的是什么? 只是为了避免创造这样的豆我们自己? 非常感谢

使用Java Generics为实体实现转换器

我正在使用Spring和Hibernate开发JSF项目,其中包括许多遵循相同模式的Converter : getAsObject接收对象id的字符串表示forms,将其转换为数字,并获取给定种类的实体和给定的id getAsString接收和实体并返回转换为String的对象的id 代码基本上如下(省略检查): @ManagedBean(name=”myConverter”) @SessionScoped public class MyConverter implements Converter { private MyService myService; /* … */ @Override public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value) { int id = Integer.parseInt(value); return myService.getById(id); } @Override public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value) { return ((MyEntity)value).getId().toString(); } } 鉴于大量的Converter与此完全相同(当然除了MyService和MyEntity的类型),我想知道是否值得使用单个通用转换器。 通用本身的实现并不困难,但我不确定声明Beans的正确方法。 可能的解决方案如下: 1 – […]

替代ui:JSF中的片段

我正在搜索一种支持的方式来渲染JSF中的一段代码,我通常使用这种方法: 由于ui:fragment不支持渲染大部分IDE(如netbeans将其标记为错误但是它可以工作,因为在JSF参数中是inheritance的。 解决此问题的一种方法是使用另一种结构(例如,如果您使用SEAM) …. 另一种方法是在所有内部内容中设置渲染,如下所示: 但我不喜欢这种方式,因为你必须将渲染添加到每个元素。 另一种方法是使用但是c:如果从JSF树中删除元素而不是你总是想要做什么,特别是如果你使用AJAX。 所以你们有另一种解决方案吗?