Tag: jsf

从JSF页面调用方法疑惑

关于我在EL中调用方法的方式,我有几个问题。 也许有人可以解释它是如何运作的。 我做了这个非常简单的例子: 的index.xhtml #{bba.salute()} #{bba.b.doSomething()} BackBeanA.java @Named(“bba”) @SessionScoped public class BackBeanA implements Serializable { private static final long serialVersionUID = 5671761649767605303L; @Inject private BackBeanB b; public String salute() { return “Hi! I am ‘A'”; } public BackBeanB getB() { return b; } public void setB(BackBeanB b) { this.b = b; } } BackBeanB.java @Named(“bbb”) […]

无法在自定义Apache Shiro AuthorizingRealm中@Inject我的DAO

我正在尝试将我的UserDAO注入Apache Shiro正在使用的自定义AuthorizingRealm中,但是……我得到了null。 我究竟做错了什么? shiro.ini [main] user = demo.shiro.security.FacesAjaxAwareUserFilter realmA = demo.shiro.security.JpaRealm credentialsMatcher = org.apache.shiro.authc.credential.SimpleCredentialsMatcher realmA.credentialsMatcher = $credentialsMatcher securityManager.realms = $realmA user.loginUrl = /pages/public/login.xhtml [users] admin = admin user = user [urls] # public files and folders /index.html = anon /resources/** = anon /pages/public/** = anon # restricted files and folders /pages/admin/** = user /pages/user/** = […]

使用JSF 2.0获取命名容器内的组件clientId的完整前缀

我正在JSF中通过AJAX更新组件: Click me 由于位于我必须在ID前面添加冒号(:)。 这很有效。 但是,如果我将相同的代码放入组件并将该组件包含到我的页面中,则代码将失败。 原因是:messages声明是指组件层次结构的根,而我想要更新的组件实际上位于我的自定义组件下,该组件位于页面下(因此位置是样式的:myComponent:messages 。 在我的组件内部,如何为组件创建正确的前缀? 我知道我可以手动为我的组件分配ID,并使用它来为引用添加前缀(例如:#{cc.attrs.id}:messages )。 但是,我不知道该组件所处的组件层次结构级别,因此所需的前缀可能类似于:foo:bar:x:y:messages 。

如何在jsf中显示hashmap值?

我有bean“MyBean”,它有属性HashMap – “map”,其值类型是MyClass。 我想使用ui:repeat在jsf中显示map的一些属性。 但是这些代码: 但是这段代码没有显示任何内容。 虽然当我尝试以这种方式在jsp中显示hashmap值时,它是成功的。 哪里错了? 怎么解决这个问题?

如何从Servlet访问托管bean和会话bean

这是我的commandLink工作方式 然后在myBean.java public String setSelectedUser(User user){ this.selectedUser = user; return “Profile”; } 假设用户名是Peter 。 然后,如果我点击Peter ,我会将selectedUser设置为Peter的用户对象,然后重定向到配置文件页面,该页面现在从selectedUser呈现信息。 我想仅使用创建相同的效果,因此我想到了GET请求。 所以我这样做 然后text(String name, Long id)方法才返回 “” + name + “” 剩下的就是创建一个servlet,捕获该id ,查询数据库以获取user对象,设置为selectedUser ,重定向。 所以这是我的servlet public class myServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Long userId = Long.parseLong(request.getParameter(“userId”)); } } 现在我有了id ,如何访问我的会话bean来为user查询数据库,然后访问托管bean以将user设置为selectedUser […]

上下文初始化时,JSF初始化应用程序范围bean

我正在构建一个JSF + Facelets Web应用程序,其中一个是每隔一段时间扫描一个目录并为任何更改编制索引的方法。 此方法是应用程序范围内的bean的一部分。 我已经构建了一个TimerTask的子类来每隔X毫秒调用一次该方法。 我的问题是初始化bean。 我可以在页面上引用bean,当我转到页面时,bean被初始化,并按照指示工作; 我想要的是在初始化Web上下文时初始化bean,这样它就不需要页面访问来启动索引方法。 谷歌已经展示了一些人想要这个function,但除了与Spring集成之外没有真正的解决方案,我真的不想仅仅为了获得这个function。 我已经尝试过使用具有“load-on-startup”设置的servlet和一个ServletContextListener来处理事情,并且无法正确设置,因为没有FacesContext可用,或者因为我无法从JSF环境引用bean。 有没有办法在Web应用程序启动时初始化JSF bean?

如何在没有文件扩展名的情况下配置JSF url映射?

大多数教程提出了类似于以下web.xml的默认JSF配置: javax.faces.DEFAULT_SUFFIX .xhtml Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet /faces/* *.jsf 使用此配置,如果相应的URL以文件扩展名.jsf(例如http://localhost/welcome.jsf )结尾,则只有Faces Servlet才能找到我的webapp中相应的* .xhtml文件。 是否可以配置web.xml,以便使用相同的* .xhtml文件将不以.jsf结尾的URL处理为JSF页面? 换句话说,我想拥有不依赖于服务器端实现的URL。

从URL中检索片段(哈希)并将值注入bean中

我正在寻找一种方法将URL的片段(#)中的值注入bean(JSF),就像注入查询参数值一样。 我正在使用Ben Alman的Bookmarkable jQuery插件( http://benalman.com/projects/jquery-bbq-plugin/ )来创建URL片段。 我希望来自prettyFaces的自定义正则表达式模式可以解决我的问题,但直到现在我还没有成功。 ( http://ocpsoft.com/docs/prettyfaces/snapshot/en-US/html_single/#config.pathparams.regext ) 我想在这里定义我的情况,如果有人有想法,我很想尝试一下。 我在用 RichFaces:3.3.3, spring:3.0.2.RELEASE, Hibernate:3.5.3-决赛, JSF:2.0.2-FCS, PrettyFaces:3.0.1 Web应用程序生成以下类型的URL,其中参数在散列(#)之后列出。 我们的想法是拥有一个基于ajax的Bookmarkable URL。 因此,每次单击更改系统状态的元素时,都会通过ajax将值发送到服务器,并在重写哈希值之后使用URL。 哈希后可以有1到3个参数,参数个数是可选的。 我的目标是,当用户为URL(带有哈希)书签并重新访问保存的页面时,页面应该将正确的值注入系统并以前一状态可视化页面(如query-parameter)。 下面,我有一个正则表达式,可以捕获哈希后的所有参数。 //URL: http://localhost:8080/nymphaea/workspace/#node=b48dd073-145c-4eb6-9ae0-e1d8ba90303c&lod=75e63fcd-f94a-49f5-b0a7-69f34d4e63d7&ln=en //Regular Expression: \#(\w*\=(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}))|\&(\w*\=(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}))|\&(\w*\=\w{2}) 我知道有些网站有些如何将URL片段发送到服务器端逻辑, http://maps.yahoo.com/#mvt=m&lat=36.952736&lon=-95.84758&zoom=11&tt=starbucks&tp=1&ioride=us http://www.cbc.ca/video/#/Shows/Death_Comes_to_Town/ID=1365210427 无论如何将URL片段中的值注入服务器端bean?

将Enum值作为参数从JSF传递

我试图将我现有的代码迁移到使用Enum,由于我缺乏Enum的经验,我遇到了一些问题。 首先,这是我的结构。 在我的EJB ,与Entity一起,我有一个枚举类(不确定它是否甚至是一个类)。 public enum Type { PROFILE_COMMENT, GROUP_COMMENT } 在我的托管bean myBean.java ,我有 @ManagedBean(name=”myBean”) @SessionScoped public class myBean { private Type type; public myBean() { } public Type getType() { return type; } public void setType(Type type) { this.type = type; } public void Test(Type t){ System.out.println(t); } } 然后在我的JSF, 我得到了java.lang.ClassNotFoundException:说Type不是类 我输入EJB的原因是我可以为我的Entity创建一个枚举类型,所以我的查询看起来像这样 select c […]

如何在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{ […]