我使用的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方法?
答案 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>
。