如果我能';t在JSF模板中使用f:viewAction,在哪里可以放置通用的post URL处理代码?
我有一个通用的JSF页面和抽象类,它由许多其他页面实现,并用于在@PostConstruct方法中进行主要处理。现在我正在为一些页面使用URL参数,我想将所有页面的处理移到viewAction方法中,这样它就可以在处理过程中使用URL参数 当然,我不能在模板中使用f:metadata/f:viewAction,因为JSF不允许这样做: 是否有一种方法可以以通用方式处理我所有页面的查看后操作处理?现在我让它使用f:event标记: 模板页面:如果我能';t在JSF模板中使用f:viewAction,在哪里可以放置通用的post URL处理代码?,jsf,facelets,jsf-2.2,Jsf,Facelets,Jsf 2.2,我有一个通用的JSF页面和抽象类,它由许多其他页面实现,并用于在@PostConstruct方法中进行主要处理。现在我正在为一些页面使用URL参数,我想将所有页面的处理移到viewAction方法中,这样它就可以在处理过程中使用URL参数 当然,我不能在模板中使用f:metadata/f:viewAction,因为JSF不允许这样做: 是否有一种方法可以以通用方式处理我所有页面的查看后操作处理?现在我让它使用f:event标记: 模板页面: <ui:insert name="metada
<ui:insert name="metadata"/>
<h:head>
<f:event type="preRenderComponent" listener="#{controller.postProcessParams}" />
</h:head>
客户端页面:
<ui:define name="metadata">
<f:metadata>
<f:param name="id" value="#{manageProjects.id}"/>
<f:viewAction action="#{manageProjects.processParams}"/>
</f:metadata>
</ui:define>
<ui:param name="controller" value="#{manageProjects}"/>
但是这是否合适?最好使用而不是,特别是如果该方法可能引发异常和/或执行导航/重定向,否则您可能会在发生异常时面临不完整的响应和/或某种“已提交响应”异常
preRenderView
基本上类似于在
/UIViewRoot
上附加preRenderComponent
。也就是说,在呈现整个视图并因此保证在将任何位写入HTTP响应体之前运行之前。您不希望在JSF忙于生成HTML输出时执行业务逻辑
对于其余部分,模板化方法是可以的。您将其放置在哪里?它应该是
的直接孩子。被打字错误咬了。我在上面重新复制/粘贴了它,现在它可以工作了。我改写了我的问题,问我所做的是否“适当”,而不是如何让它工作。希望得到答案!