如果在 JSF 表单中不满足某些条件,则显示对话框 window
Display dialog window if some criteria is not met in JSF form
我正在尝试使用 AJAX 实现 JSF 按钮,如果不满足某些条件,则使用 AJAX 形式。我试过这个例子:
<h:form id="paymentform" enctype="multipart/form-data" x:data-form-output="form-output-global" x:data-form-type="contact" class="rd-mailform text-left">
<h:commandButton id="buy" class="btn btn-primary" type="submit" value="Put" action="#{dashboard.calculateProcessing}" >
<f:ajax render="@form" execute="@form" x:data-toggle="modal" x:data-target="#demoModal"/> // if #{dashboard.amount} <= 0 call modal dialog
</h:commandButton>
<div class="modal fade" id="demoModal" role="dialog">
.....
</div>
</h:form>
@Named
@SessionScoped
public class Dashboard implements Serializable {
private static final long serialVersionUID = -2363083605115312742L;
private double amount;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
如果我这样编辑按钮:
<h:commandButton id="buy" class="btn btn-primary" type="submit" value="Put" action="#{dashboard.calculateProcessing}" x:data-toggle="modal" x:data-target="#demoModal" >
显示对话框并提交表单。
但是我找不到解决方案,如果不满足 Bean 的某些条件,如何不提交表单。你能指导我如何找到解决方案吗?
<删除公然乞求帮助,查看编辑>
您想根据 bean 中的条件执行 f:ajax
。基本上 f:ajax
应该在条件为真时呈现,否则不呈现。
每个 JSF 组件都有一个 rendered
值。
您的代码应如下所示:
<h:commandButton id="buy" class="btn btn-primary" type="submit" value="Put" action="#{dashboard.calculateProcessing}" >
<f:ajax render="@form" execute="@form" x:data-toggle="modal" x:data-target="#demoModal" rendered="#{dashboard.amount <= 0}"/>
</h:commandButton>
这也可以用多个 f:ajax
来完成,像这样:
<h:commandButton>
<f:ajax render="@form" rendered="#{bean.condition}" />
<f:ajax execute="@form" rendered="#{bean.int < 0}" />
<f:ajax action="#{bean.action}" rendered="#{bean.property == null}" />
</h:commandButton>
基本上,如果 rendered
属性为假,则不会导致客户端收到 HTML。 More about rendered
您还可以使用 jstl tags 来定义组件是否被渲染。
像这样使用:
<h:commandButton>
<c:if test="#{bean.condition}>
<!-- f:ajax here-->
</c:if>
<c:choose>
<c:when test="#{bean.condition}">
<!-- f:ajax here-->
</c:when>
<c:otherwise>
<!-- f:ajax here-->
</c:otherwise>
</c:choose>
</h:commandButton>
要在 commandButton
中调用动态操作,请参阅 this。
我正在尝试使用 AJAX 实现 JSF 按钮,如果不满足某些条件,则使用 AJAX 形式。我试过这个例子:
<h:form id="paymentform" enctype="multipart/form-data" x:data-form-output="form-output-global" x:data-form-type="contact" class="rd-mailform text-left">
<h:commandButton id="buy" class="btn btn-primary" type="submit" value="Put" action="#{dashboard.calculateProcessing}" >
<f:ajax render="@form" execute="@form" x:data-toggle="modal" x:data-target="#demoModal"/> // if #{dashboard.amount} <= 0 call modal dialog
</h:commandButton>
<div class="modal fade" id="demoModal" role="dialog">
.....
</div>
</h:form>
@Named
@SessionScoped
public class Dashboard implements Serializable {
private static final long serialVersionUID = -2363083605115312742L;
private double amount;
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
如果我这样编辑按钮:
<h:commandButton id="buy" class="btn btn-primary" type="submit" value="Put" action="#{dashboard.calculateProcessing}" x:data-toggle="modal" x:data-target="#demoModal" >
显示对话框并提交表单。
但是我找不到解决方案,如果不满足 Bean 的某些条件,如何不提交表单。你能指导我如何找到解决方案吗?
<删除公然乞求帮助,查看编辑>
您想根据 bean 中的条件执行 f:ajax
。基本上 f:ajax
应该在条件为真时呈现,否则不呈现。
每个 JSF 组件都有一个 rendered
值。
您的代码应如下所示:
<h:commandButton id="buy" class="btn btn-primary" type="submit" value="Put" action="#{dashboard.calculateProcessing}" >
<f:ajax render="@form" execute="@form" x:data-toggle="modal" x:data-target="#demoModal" rendered="#{dashboard.amount <= 0}"/>
</h:commandButton>
这也可以用多个 f:ajax
来完成,像这样:
<h:commandButton>
<f:ajax render="@form" rendered="#{bean.condition}" />
<f:ajax execute="@form" rendered="#{bean.int < 0}" />
<f:ajax action="#{bean.action}" rendered="#{bean.property == null}" />
</h:commandButton>
基本上,如果 rendered
属性为假,则不会导致客户端收到 HTML。 More about rendered
您还可以使用 jstl tags 来定义组件是否被渲染。 像这样使用:
<h:commandButton>
<c:if test="#{bean.condition}>
<!-- f:ajax here-->
</c:if>
<c:choose>
<c:when test="#{bean.condition}">
<!-- f:ajax here-->
</c:when>
<c:otherwise>
<!-- f:ajax here-->
</c:otherwise>
</c:choose>
</h:commandButton>
要在 commandButton
中调用动态操作,请参阅 this。