Tag: jsf

JSF 2.0 AJAX:使用jsf.ajax.request(或其他方式)从javascript调用bean方法

一些背景:我正在构建一个自定义的JSF组件。 该组件基本上是一个文本编辑器,它应该有一个“保存”按钮,用于保存编辑器的内容字符串。 当我使用CodeMirror库时,我需要使用javascript从编辑器中获取内容(字符串)并将其发送到服务器。 因此,在这种情况下,我不能使用基于XML的JS调用,如f:ajax 。 问题:我计划用jsf.ajax.request发送字符串,但它不直接支持在bean上调用方法。 如何以AJAX方式使用JSF调用bean中的方法? 至少有两种解决方法: 包含隐藏表单以隐藏输入字段。 从javascript更新inputfield,然后调用jsf.ajax.request发布该表单。 如果需要,可以在属性的getter或setter中调用自定义操作。 使用原始XMLHttpRequest (或者在其他JS库的帮助下)执行请求。 创建一个servlet并调用它。 两种方式都很笨拙,后者也突破了JSF的范围。 我错过了什么吗? 你是怎么做到的? 有一个非常相似的问题 ,但给出的答案仅涉及基于XML的AJAX调用。 还有另一个类似的问题 ,但它也指基于XML的AJAX调用。

用JSF下载文件?

哪个是使用JSF下载文件的正确方法?只是放一个文件链接? 在那种情况下,我如何获得文件URL? 我见过一个使用BufferedInputStream的例子: http://www.winstonprakash.com/articles/jsf/file_download_link.htm 有什么区别? 谢谢

JSF 2使用@ManagedProperty注入Spring bean / service而没有xml

我想使用jsf注释和一些spring注释将spring bean / service注入jsf托管bean。 (在jsf bean上我只想使用jsf注释)我不想使用像@named / @inject这样的注释。 我试图在网上找到一个解决方案,但没有任何运气。 例 @ManagedBean @ViewScoped public class MyBean { @ManagedProperty(value = “#{mySpringBean}”) private MySpringBean mySpringBean; public void setMySpringBean(MySpringBean mySpringBean) { this.mySpringBean = mySpringBean; } public void doSomething() { //do something with mySpringBean } } 没有使用xml就可以实现这样的function。 例如,我不想使用类似的东西 FacesContextUtils.getWebApplicationContext(context).getBean(“MySpringBean”); 或者在faces-config.xml myBean com.mytest.MyBean view mySpringBean #{mySpringBean} 类似于上面的注释,并没有定义所有jsf bean /属性和config xml文件中每个bean的spring beans […]

Netbeans上JavaServer Faces的Visual Web Editor在哪里?

我目前正在阅读一本书中的教程,它指示使用Visual JavaServer Faces框架创建Java Web App。 书中的屏幕截图显示了JavaServer Faces框架和额外的Visual JavaServer Faces框架。 我似乎无法在netbeans插件页面中找到插件/下载,或者当我谷歌它时。 此function已被删除吗? 此教程还显示了此屏幕截图: 是否已将这两个框架集成到一个框架中? 如果是这样,我该如何访问此设计屏幕? 谢谢

何时从Container托管安全迁移到Apache Shiro,Spring Security等替代方案?

我正在尝试保护使用JSF2.0构建的应用程序。 我很困惑人们什么时候选择使用像Shiro,Spring Security或者owasp的esapi这样的安全替代品来留下容器管理的安全性。 看过Stack Overflow上的一些相关问题后 ,我意识到JSF开发人员过去更喜欢基于容器的安全性。 但我也强烈建议使用Apache Shiro。 我是安全问题的新手,不知道可能是什么相关问题以及如何处理它们。 因此,我正在寻找通过其默认设置/自己处理大多数安全问题的东西。 就我的应用程序需求而言,我有一个社交应用程序,具有不同角色的用户可以访问不同的页面集,并可以根据他们的角色在这些页面上使用不同级别的function。 在那种情况下,你觉得什么对我来说是个不错的选择? 我个人已经确信选择Shiro因为它易于使用并且为新手照顾大部分事情。

阻止在页面加载时将后缀添加到资源

我有一个JSF2应用程序运行和工作没有问题。 我与JSF的问题在于资源包。 所有资源都附加了.xhtml后缀。 所以main.css在浏览器中加载后变为main.css.xhtml 。 我想拥有它所以.xhtml不会依赖于资源(不要介意页面本身)。 有没有办法让我们不能将.xhtml附加到资源上? 理想情况下,我不需要改变网站的内部工作方式。 我在下面列出了一些想法,但我不得不说我不喜欢这些。 希望在某处找到解决方案? 我在Glassfish 3.1.2.2上使用Majorra v.2.1.17。 当前Faces Servlet加载为web.xml(已更新) Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.xhtml Faces Servlet /javax.faces.resource/* 为什么这个问题与其他问题不同 带有CDN的JSF 2资源? 。 我不是要将我的资源放在CDN上,而是让我的资源留在我的服务器上但是被推向了CDN。 更改资源URL的/javax.faces.resource前缀 。 我不想改变前缀。 我只想更改后缀。 我希望成为: 没有 .xhtml扩展名。 将JSF前缀更改为后缀映射会强制我重新应用CSS背景图像上的映射 。 因为我没有加载资源的问题。 该网站有效,我们只是很难将网页与资源区分开来(因为我们只关注扩展)。 推理 当然你可能会问我为什么需要这个。 好吧,我们正在将我们的应用程序移至Akamai CDN。 我们在整合网站时遇到的问题是我们正在尝试在边缘服务器上缓存静态内容。 这是通过匹配文件扩展名来完成的(即:.js,.doc,.png,css等)。 我们无法匹配xhtml因为这将缓存所有页面以及静态内容。 这会导致会话等问题。 试图解决方案 根据BalusC的回答,我按照建议实现了资源处理程序。 我不会在这里重写代码,因为它在下面回答。 但是,我在加载复合组件时遇到错误。 我这样得到一个错误: WARNING: […]

组件系列,组件类型和渲染器类型之间的关系是什么?

当我在JSF中学习自定义组件开发时,我对组件系列,组件类型和渲染器类型之间的关系感到困惑。 例如,我注册了一个渲染器和一个自定义组件,如下所示。 faces-config.xml : study.faces.Div javax.faces.component.UIPanel HTML_BASIC javax.faces.Panel study.faces.DivRenderer com.study.ui.DivRenderer 我还在my.taglib.xml文件中注册了一个新标记,如下所示: div study.faces.Div study.faces.DivRenderer 这种配置非常有效。 但是,我不明白为什么在渲染器注册时需要行javax.faces.Panel 。 在my.taglib.xml ,组件和渲染器已连接,恕我直言,它应该足以为组件选择合适的渲染器。 附加参数的用途是什么? 我做了谷歌研究,我得到的所有答案都说“一个渲染器可以用来渲染多个组件。这些组件属于一个系列”。 但这些陈述并没有清楚我的困惑。 有人可以解释组件类型,组件系列和渲染器选择策略之间的关系吗? (希望有一个很好的例子。)

JSF 2:如何在同一输入中显示不同的ajax状态?

当每个字段失去焦点时,我想validation表单中的每个字段,当发生这种情况时,我希望这些操作发生: 1)在字段的右侧出现一个图像,一个.gif(表示系统正在检查用户输入) 2)完成时出现另一个.gif(例如,取决于输入,’sucess.gif’或’error.gif’)和右侧的消息。 我不想使用弹出窗口或类似的东西,用户将失去可用性,我不想要这个。 我正在尝试做这样的事情,这是我到目前为止所做的: 我正在寻找谷歌的一些解决方案 是我最好的选择,因为onbegin和oncomplete属性。 在JSF 2中的某些本地标记中有一些属性吗? 更新 :@BalusC方法: Insert title here function showProgress(data) { var inputElement = data.source; // The HTML DOM input element. var ajaxStatus = data.status; // Can be “begin”, “success” and “complete” var messageForInputElement = document.getElementById(inputElement.id + “_message”); switch (ajaxStatus) { case “begin”: // This is called right before […]

有没有办法在不构建整个项目的情况下运行JSF页面?

有没有办法只运行一个页面,以便我可以看到生成的html(和css),因为它会向用户看,即使它本质上是非function性的? 独立的JSF页面。 我想在实际编写表单字段之前,先查看我如何设置表单以确定它们是否符合用户的观点。 我正在使用maven和netbeans但不确定后者是否相关。

Field.get(obj)返回注入的CDI托管bean上的所有空值,而手动调用getter则返回正确的值

我试图通过reflection从JSF页面的支持bean访问某些字段的值。 问题是,当我使用getter时,我得到了正确的值但是当我使用必要字段的get(obj)方法时,我总是得到一个返回的null值。 获取beanObject: ELContext elcontext = FacesContext.getCurrentInstance().getELContext(); Object beanObject = FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elcontext, null, beanName); 要在不使用getter的情况下获取字段值,请执行以下操作: List fields = new ArrayList(); ParamsBuilder.getAllFields(fields, beanClass); for(Field field: fields) { field.setAccessible(true); System.out.println(field.getName() + “: ” + field.get(beanObject)); //just to see if it works } getAllFields方法具有以下实现: public static List getAllFields(List fields, Class type) { for (Field field: type.getDeclaredFields()) { fields.add(field); } […]