当我使用
<h:button>
或者
<h:link>
我不能在托管 bean 中进行任何业务操作?我必须使用
<h:form>
和
<h:commandButton>
或者
<h:commandLink>
使用动作参数还是有其他解决方案?
取决于您要触发的请求类型。
如果它需要是一个非幂等的 POST 请求,只需使用<h:form>
with <h:commandXxx action>
。再次根据具体的功能要求,您可以在同一视图中有条件地渲染结果,或者之后将重定向发送到目标视图。
如果它需要是幂等的 GET 请求,请使用<h:link>
/<h:button>
并在@PostConstruct
与目标页面关联的请求/视图范围的支持 bean 中执行方法中的操作。如果您需要传递参数,请使用在/<f:param>
上设置它们,并在目标视图中使用和在与目标视图关联的支持bean中设置和处理它们。<h:link>
<h:button>
<f:viewParam>
<f:event type="preRenderView">
总而言之,只需按照具体的功能要求(不幸的是,您在问题中没有说明任何内容)为工作使用正确的工具。
不,您不能使用h:link
or来做到这一点h:button
,这意味着有可收藏的 GET url。因此,如果要执行业务操作,则需要使用commandButton
或commandLink
。请注意,它也值得h:outputLink
用于在页面之间生成可收藏的链接,因为它对 SEO 更加友好。