相关疑难解决方法(0)

为什么JSF多次调用getter

假设我像这样指定一个outputText组件:

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

如果我在someProperty调用getter for时打印一条日志消息并加载页面,那么注意每个请求多次调用getter是很容易的(在我的情况下发生了两次或三次):

DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property
DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property
Run Code Online (Sandbox Code Playgroud)

如果someProperty计算的值很昂贵,这可能是一个问题.

我用Google搜索了一下,认为这是一个已知问题.一个解决方法是包括一个检查,看看它是否已经计算过:

private String someProperty;

public String getSomeProperty() {
    if (this.someProperty == null) {
        this.someProperty = this.calculatePropertyValue();
    }
    return this.someProperty;
}
Run Code Online (Sandbox Code Playgroud)

这个问题的主要问题是你得到大量的样板代码,更不用说你可能不需要的私有变量了.

这种方法有哪些替代方案?没有那么多不必要的代码,有没有办法实现这一目标?有没有办法阻止JSF以这种方式行事?

感谢您的输入!

getter performance jsf el

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

JSF2 Facelets中的JSTL有意义吗?

我想有条件地输出一些Facelets代码.

为此,JSTL标签似乎工作正常:

<c:if test="${lpc.verbose}">
    ...
</c:if>
Run Code Online (Sandbox Code Playgroud)

但是,我不确定这是否是最佳做法?还有另一种方法来实现我的目标吗?

jsf jstl facelets jsf-2

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

在JSF2 xhtml页面中声明并使用变量

<s:set var="buttonText" value="getText('person.button.add')"/>在JSTL中使用buttonText变量来设置文本.

有人告诉我如何在JSF EL中实现这一目标吗?

这里问的问题是JSF形式的IF-ELSE条件.需要知道正确的方法,但被告知作为一个单独的问题.

编辑:

我已经在上面添加了一个链接以获取详细信息,但这里又是

我在struts2项目中使用JSTL

 <s:if test="person==null || person.id==null || person.id==''">
                <s:set var="buttonText" value="getText('person.button.add')"/>
            </s:if>
            <s:else>
                <s:set var="buttonText" value="getText('person.button.edit')"/>
            </s:else>
Run Code Online (Sandbox Code Playgroud)

我想在JSF2中使用相同的方法,但使用表达式语言.我在一个变量中保存值,buttonText并在某个地方访问它#{buttonText}.我需要解决方法如何编写变量EL并使用它.希望清楚.

我只需要解决<s:set var="buttonText" value="getText('person.button.add')"/>代码行.

谢谢

jsf-2

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

标签 统计

jsf ×2

jsf-2 ×2

el ×1

facelets ×1

getter ×1

jstl ×1

performance ×1