在呈现 - 响应阶段之前调用托管bean方法

时间:2014-08-28 10:47:45

标签: jsf

我使用的JSF版本是1.2_09。 RichFaces API是3.3.2.SR1。

我正在使用<rich:dataTable>组件将List呈现到表中。让我有一个初始化mange-bean属性的manage-bean方法。调用get(int) List mehtod来呈现数据时,将调用该方法。例如,方法:

String orderedProperty;
// Something else
protected String parseOrderGetParameter(HttpServletRequest request)
    {
        String orderedProperty = "";
        Map<String, String[]> params = (Map<String, String[]>) request.getParameterMap();
        String[] value = params.get("fsp");

        if(value == null){
            return orderedProperty;
        }

        for(String s : params.get("fsp")){
            orderedProperty = orderedProperty.concat(s); 
        }

        String[] parts = orderedProperty.split(":");
        orderedProperty = parts[2];
        orderedProperty = orderedProperty.replaceFirst("j_id", "");
        orderedProperty = getHeaderNameById(Integer.valueOf(orderedProperty));
        return orderedProperty;
    }

有没有办法在渲染响应阶段之前调用maange bean方法?

1 个答案:

答案 0 :(得分:0)

对于JSF 1.2,最好的选择是<f:view beforePhase>挂钩。

<f:view beforePhase="#{bean.beforePhase}">
    ...
</f:view>
public void beforePhase(PhaseEvent event) {
    if (event.getPhaseId() == PhaseId.RENDER_RESPONSE) {
        // Do here your job which should run right before the RENDER_RESPONSE.
    }
}

如果您使用的是JSF 2.0 / 2.1,请使用<f:event type="preRenderView">,或者如果您使用的是JSF 2.2,请使用<f:viewAction>