0

我正在使用 JSF2.0 并在该数据表中创建一个数据表,我从托管 bean 获取值。在托管 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 构造标记属性也被调用。我不想表演。那么,如何摆脱这个问题,我还想在 bean2 setProperty 中设置主题值。提前致谢

4

1 回答 1

3

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

例如在视图范围内:

@ManagedBean
@ViewScoped
public class Bean {}

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

或者在会话范围内:

@ManagedBean
@SessionScoped
public class Bean {}

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

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

也可以看看:

于 2012-04-25T05:07:58.003 回答