gpt4 book ai didi

jsf - 重定向如果 f :viewParam is empty

转载 作者:行者123 更新时间:2023-12-04 14:24:24 27 4
gpt4 key购买 nike

如果 f:viewParam,我执行重定向(或错误)是空的?

<f:metadata>
<f:viewParam name="accountId" value="#{accountMB.id}"/>
</f:metadata>

当我添加 required="true" , 没发生什么事。有什么选择?

最佳答案

When I add required="true", nothing happens



您需要 <h:message(s)>显示与给定(输入)组件关联的人脸消息。您可能已经知道如何为 <h:inputText> 做到这一点。 .您可以对 <f:viewParam> 执行完全相同的操作.
<f:metadata>
<f:viewParam id="foo" ... required="true" />
</f:metadata>
...
<h:message for="foo" />

Сan I do a redirect (or error) if a f:viewParam is empty?



不直接使用标准 JSF 验证工具。您需要在 <f:viewAction> 中手动完成这项工作(您需要确保上面没有任何验证器/转换器,否则不会由于验证/转换错误而被调用;您也可以使用 <f:event type="preRenderView"> )。
<f:metadata>
<f:viewParam value="#{bean.foo}" />
<f:viewAction action="#{bean.checkFoo}" />
</f:metadata>
public String checkFoo() {
if (foo == null || foo.isEmpty()) {
return "some.xhtml"; // Redirect to that page.
} else {
return null; // Stay on current page.
}
}

发送 HTTP 错误可以如下完成(此示例发送 HTTP 400 错误):
public void checkFoo() {
if (foo == null || foo.isEmpty()) {
FacesContext context = Facescontext.getCurrentInstance();
context.getExternalContext().responseSendError(400, "Foo parameter is required");
context.responseComplete();
}
}

如果您碰巧使用 JSF 实用程序库 OmniFaces ,那么您可以使用 <o:viewParamValidationFailed> 标记,而无需额外的支持 bean 逻辑。

在 View 参数验证失败时发送重定向:
<f:metadata>
<f:viewParam ... required="true">
<o:viewParamValidationFailed sendRedirect="some.xhtml" />
</f:viewParam>
</f:metadata>

在 View 参数验证失败时发送 HTTP 400 错误:
<f:metadata>
<f:viewParam ... required="true">
<o:viewParamValidationFailed sendError="400" />
</f:viewParam>
</f:metadata>

也可以看看:
  • What can <f:metadata>, <f:viewParam> and <f:viewAction> be used for?
  • 关于jsf - 重定向如果 f :viewParam is empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29838447/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com