标签: backing-beans

如何从JSF支持bean提供文件下载?

有没有办法从JSF支持bean动作方法提供文件下载?我尝试过很多东西.主要问题是我无法弄清楚如何获取OutputStream响应以便将文件内容写入.我知道如何使用a Servlet,但这不能从JSF表单调用,需要新的请求.

如何OutputStream从当前获得响应FacesContext

jsf download jsf-2 backing-beans

85
推荐指数
2
解决办法
14万
查看次数

托管bean和辅助bean之间的区别

我在几个论坛中遇到了"托管bean"和"支持bean"的术语.很多人认为两者都是一样的.但是,似乎有一点点差异.任何人都可以帮助我理解这两个术语之间的确切区别吗?

jsf javabeans managed-bean backing-beans

61
推荐指数
4
解决办法
7万
查看次数

在不同种类的JSF管理豆之间做出区分

我最近阅读了来自Neil Griffin的这篇文章,在不同种类的JSF Managed-Beans之间做出区分,这让我想到了我自己的应用程序中不同bean之间的区别.要快速总结一下要点:

  • Model Managed-Bean:这种类型的托管bean参与MVC设计模式的"模型"关注.当你看到"模型"这个词时 - 想想数据.JSF模型bean应该是遵循JavaBean设计模式的POJO,其中getter/setter封装属性.

  • 支持托管Bean:这种类型的托管bean参与MVC设计模式的"视图"关注.backing-bean的目的是支持UI逻辑,并且与Facef组合中的JSF视图或JSF表单具有1 :: 1的关系.虽然它通常具有带有关联getter/setter的JavaBean样式属性,但它们是View的属性 - 而不是底层应用程序数据模型的属性.JSF支持bean也可能有JSF actionListener和valueChangeListener方法.

  • Controller Managed-Bean:这种类型的托管bean参与MVC设计模式的"Controller"关注.控制器bean的目的是执行某种业务逻辑并将导航结果返回给JSF导航处理程序.JSF控制器bean通常具有JSF操作方法(而不是actionListener方法).

  • 支持Managed-Bean:这种类型的bean"支持"MVC设计模式的"View"关注中的一个或多个视图.典型的用例是向JSF h:selectOneMenu下拉列表提供ArrayList,这些列表出现在多个JSF视图中.如果下拉列表中的数据特定于用户,则bean将保留在会话范围内.

  • Utility Managed-Bean:这种类型的bean为一个或多个JSF视图提供某种类型的"实用程序"功能.一个很好的例子可能是FileUpload bean,它可以在多个Web应用程序中重用.

这对我来说很有意义,在过去的几个小时里,我一直在重构我的代码,并针对用户登录提出以下内容:

AuthenticationController是Controller Managed-Bean的一个例子.它是请求范围的,具有两个用于设置用户名和密码的getter和setter,以及两种导航方法,authenticatelogout在成功登录时将用户导航到其私有区域,或者在注销时返回主页面.

UserBean是一个支持管理Bean的示例.它是会话范围的,并且具有User类的实例(当您未经过身份验证时将使用getter和setter,它将为null),仅此而已.

AuthenticationController有这个用户作为托管属性(@ManagedProperty(value = "#{userController.user} private User user;).验证成功后,AuthenticationController将使用用于登录的相应用户名将托管属性设置为实际用户实例.

任何新的bean都可以将用户作为托管属性获取并提取他们需要的数据,例如组成员资格,如果User该类具有包含组名的列表.

这种方式是关于分离问题的正确方法吗?

java jsf java-ee backing-beans

45
推荐指数
1
解决办法
1万
查看次数

JPA实体作为JSF Bean?

将实体用作JSF Backing Beans是否有意义?

@Entity
@ManagedBean
@ViewScoped
public class User {

    private String firstname;
    private String lastname;

    @EJB
    private UserService service;

    public void submit() {
        service.create(this);
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

或者更好的是将它们分开保存并将数据从支持bean传输到最后的实体?

@ManagedBean
@ViewScoped
public class UserBean {

    private String firstname;
    private String lastname;

    @EJB
    private UserService service;

    public void submit() {
        User user = new User();
        user.setFirstname(firstname);
        user.setLastname(lastname);
        service.create(user);
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

jsf entity backing-beans

10
推荐指数
1
解决办法
5743
查看次数

将支持bean作为参数传递给Facelet包括

我有一个可能在不同应用程序中使用的Facelet.我不复制它,但重复使用它.我需要传递将视图作为参数进行管理的辅助bean,因为某些逻辑可能会根据使用它的应用程序而有所不同.

我不想使用复合组件,只是包含Facelet并指定哪个bean将管理视图.我怎样才能做到这一点?

让我举个例子:

<ui:composition template="/resources/common/templates/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich" xmlns:fn="http://java.sun.com/jsp/jstl/functions">
    <ui:define name="content">
        <!-- somehow establish the backing bean that will manage formView.xhtml --> 
        <!-- f:set  assign="ParameterBean" value="#{Bean}" / -->
        <ui:include src="formView.xhtml" />
    </ui:define>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)

formView.xhtml:

<ui:composition template="/resources/common/templates/template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich" xmlns:fn="http://java.sun.com/jsp/jstl/functions">
    <ui:define name="content">
        <h:outputText value="#{ParameterBean.texto}" />
    </ui:define>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)

parameters facelets include jsf-2 backing-beans

9
推荐指数
1
解决办法
1万
查看次数

'null Converter'的转换错误设置值'52'

我是JSF的新手,我一直在尝试存储使用ah:selectOneMenu来获取产品类别的表单中的数据.h:selectOneMenu正在从DB填充,但是,当尝试在DB中存储产品时,我收到一个错误:转换错误设置值'52'表示'null Converter'.我已经在线查看了StackOverflow和教程中的类似问题,但我仍然收到错误.

这是xhtml:

<h:selectOneMenu id="category_fk" value="#{productController.product.category_fk}" 
                                 converter="#{categoryConverter}" title="Category_fk" >
                    <!-- DONE: update below reference to list of available items-->
                    <f:selectItems value="#{productController.categoryList}" var="prodCat"
                                   itemValue="#{prodCat}" itemLabel="#{prodCat.name}"/>
                </h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

这是产品控制器:

@Named
@RequestScoped
public class ProductController {

    @EJB
    private ProductEJB productEjb;
    @EJB
    private CategoryEJB categoryEjb;

    private Product product = new Product();
    private List<Product> productList = new ArrayList<Product>();

    private Category category;
    private List<Category> categoryList = new ArrayList<Category>();

    public String doCreateProduct()
    {
        product = productEjb.createProduct(product);
        productList = productEjb.findAllProducts();
        return "listProduct";
    }

    @PostConstruct
    public void init()
    {
        categoryList …
Run Code Online (Sandbox Code Playgroud)

xhtml jsf converter java-ee backing-beans

8
推荐指数
1
解决办法
3万
查看次数

如何(或者你应该)避免在jsf中使用长方法/类

我主要使用基于JSF的项目中的遗留代码,并且在支持bean中有很多很长的类和方法.

这一直在困扰着我,但是当我寻找可以做的事情的时候,我所能提出的大部分时间都是将一个长方法划分为n个小方法.这给你一个很长的课程,有时甚至更难阅读.

那么你怎么做才能让你的支持bean简洁明了?或者你为一个页面保留一个大的支持bean?有没有最好的做法?

我假设这与jsf没有直接关系,而是与你用控制器"支持"视图的任何模型有关.所以一般建议也会有所帮助.

java model-view-controller jsf backing-beans

5
推荐指数
1
解决办法
2425
查看次数

单击某些按钮时调用托管bean方法

我是JSF的新手,想拥有一个按钮,当单击该按钮时,它将调用backing bean的方法。这可能吗,或者我必须使用AJAX或其他工具?我尝试过类似的事情

<button onclick="#{myManagedBean.myMethod()}">MyButton</button>
Run Code Online (Sandbox Code Playgroud)

但是他们没有用。正常的做法是什么?

编辑:
该按钮是由JqueryUI创建的,并且我无法将按钮的类型更改为commandButton。我只能进行两种自定义操作:
1.从该按钮调用javascript函数
2.更改表单的目标(按钮所在的位置)
因此,我如何从这两种方法(如从Javascript)调用后备bean方法或在表单上提交?

java jsf primefaces backing-beans

5
推荐指数
1
解决办法
3万
查看次数

JSF输入到多个支持bean属性

我有一些情况下我有一个JSF页面和一个输入我想在支持bean上设置多个值而不在辅助bean中执行代码.

我可以设置一个值:

 <h:selectOneRadio id="selectMembershipLevel" class="TODO_SELECT" 
value="#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_code]}">
 <f:selectItem id="basic" itemLabel="#{overrideMsg.pbBasic}" itemValue="B" />
 <f:selectItem id="plus" itemLabel="#{overrideMsg.pbPlus}" itemValue="P" />
 <f:selectItem id="plusRV" itemLabel="#{overrideMsg.pbPlusRV}" itemValue="RV" />
Run Code Online (Sandbox Code Playgroud)

但是如果我想在JSF页面上一次设置多个可以做到的话吗?

#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_code]}
#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_desc]}//Bdesc
#{joinBackingBean.map[joinBackingBean.map.primary_memberInfo_membershipType_type]}//Btype
Run Code Online (Sandbox Code Playgroud)

tags jsf backing-beans

3
推荐指数
1
解决办法
1482
查看次数

在支持bean中生成Primefaces Charts的png/jpeg图像?

我在我的应用程序中使用Primefaces 3.1.1图表,在JSF页面中生成图表没有问题,但我试图找出是否可以为图表生成图像(png或jpeg)以便我可以插入这些图像到java中的Excel文件(Apache POI).

我知道最新的Primefaces版本3.4.1具有导出图表功能,但生成的图像仅发生在客户端(它是jqPlot).但我需要在服务器端.

目前我们在支持bean中使用jFreeChart用于此目的,因此浏览器中的图表与Excel中的图表看起来非常不同.我们试图找出升级到Primefaces 3.4.1是否可以让我们选择在浏览器中制作图表并且Excel中的图表看起来是一样的?还是有另一种方法吗?

如果这是一个问题,使用mojarra-2.1.3-FCS.

charts primefaces jsf-2 backing-beans

2
推荐指数
1
解决办法
6394
查看次数

没有调用JSF Backing Bean方法

当我单击触发editUser(User)方法的命令按钮或在我的辅助bean中触发editClient(User)方法的方法时,不再调用这些方法.它以前工作过,但现在什么也没有.页面重新加载.

这可能有什么问题?

这是我的观点:

<p:accordionPanel activeIndex="#{userManagement.activeOverviewTab}" id="overview" rendered="#{loginControl.isAllowedForClientUserCreation()}">
<p:tab title="#{text.tabClients}" rendered="#{loginControl.isAllowedForUserManagement()}">
    <h:form id="clientForm">
    <p:dataTable value="#{userManagement.clientUsers}" var="clientUser" paginator="true" rows="5" id="clientTable">
        <p:column><f:facet name="header"><h:outputText value="#{text.colClientName}"/></f:facet><h:outputText value="#{clientUser.client.clientName}"/></p:column>
        <p:column><f:facet name="header"><h:outputText value="#{text.colClientEmail}"/></f:facet><h:outputText value="#{clientUser.client.email}"/></p:column>
        <p:column><f:facet name="header"><h:outputText value="#{text.colClientJobLayout}"/></f:facet><h:outputText value="#{clientUser.client.reportLayout}"/></p:column>
        <p:column><f:facet name="header"><h:outputText value="#{text.colUsersLogin}"/></f:facet><h:outputText value="#{clientUser.login}"/></p:column>
        <p:column><f:facet name="header"><h:outputText value="#{text.colUsersPassword}"/></f:facet><h:outputText value="#{clientUser.password}"/></p:column>            
        <p:column><f:facet name="header"><h:outputText value="#{text.colUsersAction}"/></f:facet>
            <p:commandLink onclick="clientDlg.show()">
                <h:graphicImage name="icons/pencil.png" title="#{text.editClientUser}" />
            </p:commandLink>
                <p:dialog header="#{text.editClientUser}" widgetVar="clientDlg" modal="true" resizable="false" width="350" height="190" showEffect="slide" hideEffect="explode">
                <h:form id="customerEditForm">
                <p:growl id="clientUserMessages"/>
                <br/>
                <p:panelGrid columns="2" columnsClasses="odd, even">
                    <h:outputLabel value="#{text.colClientName}"/><h:inputText value="#{clientUser.client.clientName}" />
                    <h:outputLabel value="#{text.colClientEmail}"/><h:inputText value="#{clientUser.client.email}" />
                    <h:outputLabel value="#{text.colClientJobLayout}"/><h:inputText value="#{clientUser.client.reportLayout}" />
                    <h:outputLabel value="#{text.colUsersLogin}"/><h:inputText …
Run Code Online (Sandbox Code Playgroud)

jsf method-call primefaces backing-beans

1
推荐指数
1
解决办法
6377
查看次数

使用JTA持久性上下文而不设置hibernate.transaction.jta.platform

我正在使用尽可能少的重新编程来更新旧应用程序.我创建了一个类似于旧页面的页面,只有一些测试数据,以确保我可以创建与ejb/jpa的链接,我遇到了问题.我将发布jsp,persistence.xml和错误.在研究网络后,我仍然不明白问题是什么或如何解决它.谢谢.

JSP

<%@ page import="com.ray.adt.model.Gridmaster" %>
<jsp:useBean id="GridMasterBean" scope="page" class="com.ray.adt.ejb.grid.GridMasterBean"/>
<%
System.out.println ("Start")    ;
String gridid = request.getParameter("gridid");
System.out.println ("String id is " + gridid);
Gridmaster master = null;
Integer gridInteger = Integer.parseInt(gridid);
master = GridMasterBean.findGrid(gridInteger);
String title = "None";
title =  master.getProgram();
System.out.println ("title is " + title);
%>
<html>
TEST PAGE

</html> 
Run Code Online (Sandbox Code Playgroud)

persistence.xml中

<?xml version="1.0" encoding="UTF-8"?>
 <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
 <persistence-unit name="Grid-Persistence" transaction-type="JTA">
 <provider>org.hibernate.ejb.HibernatePersistence</provider>
 <jta-data-source>java:/DefaultDS</jta-data-source>
 <exclude-unlisted-classes>false</exclude-unlisted-classes>
 <properties>
 <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
 <property name="hibernate.hbm2ddl.auto" value="validate"/>
 </properties>
 </persistence-unit>
 </persistence> …
Run Code Online (Sandbox Code Playgroud)

java jsp ejb backing-beans

0
推荐指数
1
解决办法
6052
查看次数