在jsf bean中设置和获取参数时的性能问题

时间:2012-04-25 03:52:06

标签: jsf-2

我正在使用JSF2.0并且我在该数据表中创建一个dataTable我从托管bean获取值。在post构造的annoted方法中的托管bean我从另一个文件调用我的Web服务。

以下是该代码的代码

<h:dataTable
                    value="#{bean1.getList}" var="c" styleClass="order-table"
                    headerClass="order-table-header" width="100%" 
                    rowClasses="order-table-odd-row,order-table-even-row" rows="8"
                    columnClasses="first,second">

                    <h:column>
                        <f:facet name="header">
                            <h:selectBooleanCheckbox></h:selectBooleanCheckbox>
                        </f:facet>
                             <h:selectBooleanCheckbox value="#{c.id}"></h:selectBooleanCheckbox>

                    </h:column>

                    <h:column>
                        <!-- <f:facet name="header"/> -->
                        <h:outputLabel value="From: "></h:outputLabel>
                        <h:outputLabel value="#{c.from}"></h:outputLabel>
                        <br></br>
                        <!-- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -->
                        <h:outputLabel value="Sub: "></h:outputLabel>
                        <h:outputLabel  value="#{c.sub}"/>
                        <h:commandLink immediate="true" action="#{bean2.doRead}" value="Read" id="Read"></h:commandLink> 
                    </h:column>


                    <!-- Footer Setting -->
                    <f:facet name="footer">

                    </f:facet>
                </h:dataTable>

我的Bean1类

@PostConstruct
public void prepareList(){
{
        web service call

}

public List<InboxBean> getemailList(){
    return list;
}

现在当我点击那个id为read的commandlink时,我的bean1 post构造的taged属性也被调用了。我不想表演。那么,如何摆脱这个问题,我也想在bean2 setProperty中设置主题值。提前致谢

1 个答案:

答案 0 :(得分:3)

如果将bean放入请求范围,则会发生这种情况。然后,每个HTTP请求都将重建bean。将bean放在视图或会话范围中。

E.g。在视图范围内:

@ManagedBean
@ViewScoped
public class Bean {}

只要您通过在操作方法中返回nullvoid与同一视图进行交互,视图范围内的bean就会存在。

或在会话范围内:

@ManagedBean
@SessionScoped
public class Bean {}

会话范围的bean与已建立的浏览器会话一样长。也就是说,从第一个涉及bean的HTTP请求开始,直到客户端关闭整个浏览器实例,或者当会话在服务器端到期时(默认为30分钟)。

对于您的特定情况,视图范围的bean很可能是最佳选择。

另见: