Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我能';t在JSF模板中使用f:viewAction,在哪里可以放置通用的post URL处理代码?_Jsf_Facelets_Jsf 2.2 - Fatal编程技术网

如果我能';t在JSF模板中使用f:viewAction,在哪里可以放置通用的post URL处理代码?

如果我能';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

我有一个通用的JSF页面和抽象类,它由许多其他页面实现,并用于在@PostConstruct方法中进行主要处理。现在我正在为一些页面使用URL参数,我想将所有页面的处理移到viewAction方法中,这样它就可以在处理过程中使用URL参数

当然,我不能在模板中使用f:metadata/f:viewAction,因为JSF不允许这样做:

是否有一种方法可以以通用方式处理我所有页面的查看后操作处理?现在我让它使用f:event标记:

模板页面:

<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输出时执行业务逻辑


对于其余部分,模板化方法是可以的。

您将其放置在哪里?它应该是
的直接孩子。被打字错误咬了。我在上面重新复制/粘贴了它,现在它可以工作了。我改写了我的问题,问我所做的是否“适当”,而不是如何让它工作。希望得到答案!