标签: managed-bean

在纯HTML属性中使用JSF EL

我们可以在HTML标记中使用JSF EL吗?例如,在纯HTML <td>元素中,我们可以使用EL #{bean.color}作为bgcolor属性吗?

<td bgcolor="#{bean.color}">
Run Code Online (Sandbox Code Playgroud)

html jsf attributes el managed-bean

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

在 JSF 的托管 bean 中,getter 和 setter 是强制性的吗?

我有一个 JSF 组件,它是从托管 bean 的 getter 初始化的getProperty()setProperty()在该托管 bean 中是否也必须有一个 setter ?

java jsf managed-bean

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

在ManagedBean中获取类的JSF转换器(JSF 1.2)

我遇到困难,需要JSF专家的外界帮助,遇到以下问题:我在faces-config.xml中为特定类定义了一些转换器,所以我不必一直使用converter-attribute或tag.例如:

    <converter>
      <converter-for-class>org.joda.time.DateTime</converter-for-class>
      <converter-class>com.example.converter.JodaDateTimeConverter</converter-class>
    </converter>
Run Code Online (Sandbox Code Playgroud)

现在需要一个JSF-Component(主要是rich:extendedDataTable)的爬虫,它构建整个组件树并逐级转换为CSV,HTML或稍后可能需要的任何东西.即导出为CSV,HTML,...的通用方法,无需每次重新实现它.这几乎已经完成了(感谢我的一位老同事的好主意),除了一部分之外它确实很有效:

    Object expressionResult = expression.getValue(FacesContext.getCurrentInstance().getELContext());
    expressionResultString = expressionResult.toString();
Run Code Online (Sandbox Code Playgroud)

该命令检索h:outputText的值并将其转换为String.如果有针对特定expressionResult的自定义转换器,那么最后一行就是我想要用converter-for-class替换的.我无法找到如何为我的类找到精确的转换器(由faces-config指定).FacesContext似乎没有为我的用例提供任何有用的方法/对象.直接访问faces-config.xml似乎有点不对劲.正确的方法可能类似于:

    Converter converter = magically_fetch_the_correct_converter_for_expressionResult_type;
    converter.getAsString(FacesContext.getCurrentInstance(), component,
                                expressionResult);
Run Code Online (Sandbox Code Playgroud)

如果我用转换器-ID和相应的属性/标签的组件本身,但我真的想避免那种无用的附加代码这将是相当容易的.

有人可以帮助我吗?

jsf converter faces-config managed-bean

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

c:为bean属性设置

我正在寻找一些用于在JSF托管bean中设置属性的代码.我的第一个想法是这样的:

<c:set var="#{loginBean.device}" value="mobil"></c:set>
Run Code Online (Sandbox Code Playgroud)

这意味着我想将属性device设置为值,"mobil"而不必单击按钮.

jsf jstl properties managed-bean

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

使用jsf会话范围的托管bean来表示静态分层数据

这可能是一种架构问题,但它仍然必须有一个"最佳实践解决方案"或一个公认的标准.

我在谈论需要在网站上显示的某种静态数据,例如产品目录,菜单和菜单项列表,面包屑块列表等.我想这个选项在使用任何标准CMS时都可用.

但是我想在这个问题上使用纯JSF解决方案.

所以,回到这个问题,我的阐述源于以下原则:

  1. 数据不应该在facelets中进行硬编码,因此我使用数据库来保存值,就像在下面的db脚本中一样(在我的例子中是MYSQL):

    CREATE TABLE CatalogueGroup (
        CatalogueGroupName VARCHAR(100) NOT NULL PRIMARY KEY,
        URLPath VARCHAR(200) NOT NULL,
        ParentGroupName VARCHAR(100) DEFAULT NULL,
        FOREIGN KEY (ParentGroupName) REFERENCES CatalogueGroup(CatalogueGroupName) ON UPDATE CASCADE ON DELETE SET NULL
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后我想使用实体类保存在@ManagedBean中并将其显示在视图中,如

    public class CatalogueGroup implements Serializable {
        private String catalogueGroupName;
        private List<CatalogueGroup> children = new ArrayList<CatalogueGroup>();
        private CatalogueGroup parentGroup;
        //other stuff of this bean
    }
    
    @ManagedBean
    @SessionScoped
    public class CatalogueBean implements Serializable {
        private CatalogueGroup catalogue;//loaded via CatalogueGroupDAO with condition parentGroup == …
    Run Code Online (Sandbox Code Playgroud)

jsf-2 managed-bean

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

获取SelectOneMenu的选定值

我正在jsf页面上测试组件"SelectOneMenu".我通过我的ManageBean(将从数据库中获取所有动物)以dinamically填充此组件.

我想知道是否有可能看到用户选择的那个"SelectOneMenu"(组合框),我正在尝试使用value ="#{animalsManage.animalSelect}",但它只在页面的开头调用.另外,我正在使用inputText来查看"SelectOneMenu"的选定内容的值.

我做错了什么?

JSF:

    <body>
    <ui:component>
        <h:form>
                    <h:outputText value="Select one Mets File" />
                    <h:selectOneMenu id="combo" value="#{animalsManage.animalSelected}">
                        <f:selectItem itemLabel="Select..."  noSelectionOption="true"/>
                        <f:selectItems value="#{animalsManage.allAnimals}" />
                    </h:selectOneMenu>
                    <h:inputText id="textbox" value="#{animalsManage.animalSelected }" />
        </h:form>
    </ui:component>
</body>
Run Code Online (Sandbox Code Playgroud)

ManageBean:

    @ManagedBean
    @ViewScoped
    public class AnimalsManage implements Serializable {

    @EJB
    private AnimalsFacadeREST animalsFacadeREST;
    private String animalSelected;
    private List< SelectItem> selectAnimals;

    public List<SelectItem> getAllAnimals() {
            List<Animals> al = animalsFacadeREST.findAll();
            selectAnimals = new ArrayList< SelectItem>();
            int i = 0;
            for (Animals animal: al) {
                selectAnimals.add(new SelectItem(i, animal.getName()));
                i++;
            }
            return …
Run Code Online (Sandbox Code Playgroud)

selectonemenu jsf-2 managed-bean

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

在JSF请求期间,@ ManagedBean @Component类中的@Autowired服务为null

我尝试使用JSF 2进行联合Spring 3(MVC).我在Spring和JSF中有一些经验,但之前从未尝试过加入它们.最后我有2个文件

@ManagedBean(name = "userBean")
@Scope
@Component
public class someBean {

  @Autowired
  private TestService testService;

  public void printString() {
    System.out.println(testService.getString());
  }
}
Run Code Online (Sandbox Code Playgroud)

@ManagedBean(name = "studentBean")
@Scope
@Component
public class StudentBean {

  @Autowired
  private TestService testService;

  public void printString() {
    System.out.println(testService.getString());
  }
}
Run Code Online (Sandbox Code Playgroud)

对于这些文件,我有正确的spring,jsf和web.xml配置.并有.xhtml页面,我为'someBean'和'StudentBean'启动printString().我在第一种情况下使用NPE,在第二种情况下在控制台中使用"some string".原因很简单 - Spring上下文和JSF中的bean名称不同.所有问题都完成了

@Component => @Component("userBean") 
public class someBean {
Run Code Online (Sandbox Code Playgroud)

在调试中我看到了

private TestService testService;

@Autowired
public void setTestService(TestService testservice) {
  this.testService = testService;
}
Run Code Online (Sandbox Code Playgroud)

当JSF bean创建的testService集不为null时,但在JSF生命周期中它为null时

public void pringString() {
  testService.blah();
}
Run Code Online (Sandbox Code Playgroud)

testService为null.这是我无法理解的.有谁深入了解Spring和JSF详细描述这种情况?

spring dependency-injection jsf-2 managed-bean

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

Java中的公共字段

我有这个Managed bean:

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.sql.DataSource;
import javax.annotation.Resource;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
// or import javax.faces.bean.ManagedBean;   

import org.glassfish.osgicdi.OSGiService;

@Named("ApplicationController")
@SessionScoped

public class Tab1Page implements Serializable {
    public String actionString;

    public Tab1Page() {
    }
    public static final long serialVersionUID = 254415216070877770L;
// Constants
    public final static String hashKey = "tab1PageTab";
    public String actApplicationControllerionString = "";

    @PostConstruct
    public void post() {
        Format formatter;
        Date date = new Date(); …
Run Code Online (Sandbox Code Playgroud)

java glassfish managed-bean

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

Servlet与豆类

我是java的新手(学习JSF和其他JAVA EE组件)并且有一个非常基本的问题.

当Beans可以完成很多事情时,为什么我们需要一个Servlet.Servlet中有什么不能从Bean完成,或者在基于Web的应用程序中如何比Beans更好地使用Servlet.

servlets managed-bean

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

读取bean属性的立即vs延迟评估

我仍然不清楚JSF immediate evaluationvs 的使用deferred evaluation,主要是因为在线示例几乎从未使用过前一种方法.

我已经看到了相当多的JSF示例,包括http://docs.oracle.com/javaee/6/tutorial/doc/中包含的那些示例,我有点困惑的事实是我几乎只看到了一些示例#{}而不是${},即使我们正在做的只是读取bean属性.

从我对这两个用途的理解,${}只能用于读取bean属性,而不是用于编写.我还没有找到关于JSF生命周期的immediatevs deferred评估的确切差异以及读取bean属性会有什么区别的明确解释.

如果每个人总是使用#{}for read bean属性,你何时会推荐使用${}

所以,总结一下:

  • 为什么大家都似乎更喜欢#{}${}读取 bean的属性?
  • 你什么时候建议使用${}而不是#{}
  • 你能给我一个例子,说明使用的${}结果与使用#{}的结果不同(你可以解释为什么结果不同)?

jsf el managed-bean

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