标签: jsf

如何在JSF表达式语言中获得列表的长度?

如何获得ArrayList使用JSF EL表达式的长度?

#{MyBean.somelist.length}
Run Code Online (Sandbox Code Playgroud)

不起作用.

java jsf jsp jstl el

116
推荐指数
4
解决办法
12万
查看次数

JSF支持bean结构(最佳实践)

我希望在这篇文章中,我可以得到人们对JSF页面和支持bean之间接口的最佳实践的看法.

我永远无法解决的一件事是我的支持豆的结构.此外,我从未找到关于这个主题的好文章.

什么属性属于哪个支持bean?何时适合向给定bean添加更多属性,而不是创建新bean并将属性添加到其中?对于简单的应用程序,考虑到将一个bean注入另一个bean所涉及的复杂性,为整个页面只有一个支持bean是否有意义?支持bean是否应该包含任何实际的业务逻辑,还是应该严格包含数据?

随意回答这些问题以及可能出现的任何其他问题.


至于减少JSF页面和支持bean之间的耦合,我从不允许JSF页面访问任何支持bean属性的属性.例如,我从不允许以下内容:

<h:outputText value="#{myBean.anObject.anObjectProperty}" />
Run Code Online (Sandbox Code Playgroud)

我总是需要这样的东西:

<h:outputText value="#{myBean.theObjectProperty}" />
Run Code Online (Sandbox Code Playgroud)

支持bean值为:

public String getTheObjectProperty()
{
    return anObject.getAnObjectProperty();
}
Run Code Online (Sandbox Code Playgroud)

当我循环遍历集合时,我使用包装类来避免向下钻取到数据表中的对象.

一般来说,这种方法对我来说是"正确的".它避免了视图和数据之间的任何耦合.如果我错了,请纠正我.

java jsf

116
推荐指数
3
解决办法
7万
查看次数

当使用jQuery和AngularJS等JavaScript库实现UI时,JSF的需求是什么

我正在阅读JSF,它是一个UI框架并提供了一些UI组件.但它与jQueryUI,AngularJS,ExtJS甚至纯HTML,CSS和JavaScript中可用的组件数量有何不同或更好.

为什么有人要学习JSF?

user-interface jsf javascript-framework

114
推荐指数
6
解决办法
5万
查看次数

JSF vs Facelets vs JSP

对于Java Server Faces与所谓的facelets之间的具体区别,我似乎无法得到明确的答案.任何人都可以给我一个明确的答案吗?!?

此外,我知道JSF或JSP可用于创建动态网页,但两个看似相互冲突的细节让我感到困惑.我听说过以下两种情况:

  1. JSF是JSP的替代品; 和

  2. JSF和JSP构成了Java的Web层MVC范例中View的不同部分

那是哪个呢?逻辑决定它几乎肯定不能两者兼得!

java jsf jsp

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

支持bean(@ManagedBean)或CDI Beans(@Named)?

我刚开始阅读Core JavaServer Faces,第3版.他们这样说(强调我的):

对于可以在JSF页面中使用的bean,有两种不同的机制,CDI bean和JSF托管bean,这是一个历史事故.我们建议您使用CDI bean,除非您的应用程序必须在像Tomcat这样的普通servlet运行器上运行.

为什么?他们没有提供任何理由.我一直在使用@ManagedBean在GlassFish 3上运行的原型应用程序中的所有bean,我还没有发现任何问题.我不介意迁移@ManagedBean@Named,但我想知道为什么我应该打扰.

jsf java-ee cdi jsf-2

106
推荐指数
3
解决办法
7万
查看次数

为什么JSF会在服务器上保存UI组件的状态?

  1. 直到在什么时间点不JSF UI保存组件的状态在服务器端和什么时候被删除的UI组件的状态信息从服务器内存?当应用程序中的登录用户浏览页面时,组件的状态是否会继续在服务器上累积?

  2. 我不明白在服务器上保持UI组件状态有什么好处?是不是直接将经过验证/转换的数据传递给托管bean?我可以或者应该尽量避免它吗?

  3. 如果有数千个并发用户会话,那么在服务器端是否会消耗太多内存?我有一个应用程序,用户可以在某些主题上发布博客.这个博客的规模非常大.当有回复或请求查看博客时,这些大页面数据是否会被保存为组件状态的一部分? 这会耗费太多记忆.这不是一个问题吗?


更新1:

现在,在使用JSF时不再需要保存状态.可以使用高性能无状态JSF实现.有关详细信息和讨论,请参阅此博客此问题.此外,JSF规范中还包含一个未解决的问题,即为JSF提供无状态模式的选项.(PS考虑的问题投票这个这个,如果这对你是一个非常有用的功能.)


更新2(24-02-2013):

一个好消息,Mojarra 2.1.19无状态模式!

看这里:

http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255

http://java.net/jira/browse/JAVASERVERFACES-2731

http://balusc.blogspot.de/2013/02/stateless-jsf.html

java jsf java-ee state-saving

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

如何在f中使用枚举值:selectItem(s)

我想制作一个selectOneMenu下拉列表,以便我可以在我的问题上选择一个状态.是否可以使f:selectItem更灵活,考虑到如果枚举的顺序发生变化会发生什么,以及列表是否很大?我能做得更好吗?是否可以自动"选择"问题所具有的项目?

恩类

public enum Status {
    SUBMITTED,
    REJECTED,
    APPROVED
}
Run Code Online (Sandbox Code Playgroud)

问题实体

@Enumerated(EnumType.STRING)
private Status status;
Run Code Online (Sandbox Code Playgroud)

JSF

<div class="field">
    <h:outputLabel for="questionStatus" value="Status" />
    <h:selectOneMenu id="questionStatus" value="#{bean.question.status}" >
        <f:selectItem itemLabel="Submitted" itemValue="0" />
        <f:selectItem itemLabel="Rejected" itemValue="1" />
        <f:selectItem itemLabel="Approved" itemValue="2" />
    </h:selectOneMenu>
    <hr />
</div>
Run Code Online (Sandbox Code Playgroud)

jsf enums selectonemenu jsf-2

100
推荐指数
2
解决办法
8万
查看次数

在任何与Servlet相关的类中按名称获取JSF托管bean

我正在尝试编写一个自定义servlet(用于AJAX/JSON),我想在其中引用我@ManagedBeans的名字.我希望能够映射:

http://host/app/myBean/myProperty

至:

@ManagedBean(name="myBean")
public class MyBean {
    public String getMyProperty();
}
Run Code Online (Sandbox Code Playgroud)

是否可以从常规servlet中按名称加载bean?是否有我可以使用的JSF servlet或帮助程序?

我似乎被春天宠坏了,这一切都太明显了.

jsf servlets java-ee jsf-2 managed-bean

98
推荐指数
2
解决办法
15万
查看次数

如何使用PrimeFaces p:fileUpload?从不调用Listener方法或者UploadedFile为null /抛出错误/不可用

我正在尝试使用PrimeFaces上传文件,但fileUploadListener上传完成后不会调用该方法.

这是观点:

<h:form>
    <p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}"
        mode="advanced" 
        update="messages"
        sizeLimit="100000" 
        allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>

    <p:growl id="messages" showDetail="true"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)

还有豆子:

@ManagedBean
@RequestScoped
public class FileUploadController {

    public void handleFileUpload(FileUploadEvent event) {
        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

}
Run Code Online (Sandbox Code Playgroud)

我已经在方法上放置了一个断点,但它从未调用过.当使用mode="simple"和时ajax="false",它已被调用,但我希望它在高级模式下工作.我正在使用Netbeans和Glassfish 3.1.

jsf file-upload primefaces jsf-2

98
推荐指数
3
解决办法
14万
查看次数

如何将选定的行传递给dataTable中的commandLink或ui:repeat?

我在JSF 2应用程序中使用Primefaces.我有一个<p:dataTable>,而不是选择行,我希望用户能够直接对各行执行各种操作.为此,我<p:commandLink>在最后一栏中有几个.

我的问题:如何将行ID传递给命令链接启动的操作,以便我知道要对哪一行进行操作?我尝试使用<f:attribute>:

<p:dataTable value="#{bean.items}" var="item">
    ...
    <p:column>
        <p:commandLink actionListener="#{bean.insert}" value="insert">
            <f:attribute name="id" value="#{item.id}" />
        </p:commandLink>
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

但它总是产生0 - 显然在f呈现属性时行变量不可用(当我使用固定值时它可以工作).

有人有替代解决方案吗?

datatable jsf parameter-passing commandlink jsf-2

97
推荐指数
3
解决办法
17万
查看次数