0
以下JSF页面JSF/Primefaces发送两个请求,以更新的输入表单和发送PDF返回给浏览器
<h:form id="#{cc.clientId}>
<p:inputText id="txt" value="#{controller.property}" required="true"/>
<p:message for="txt"/>
<p:commandButton actionListener="#{controller.print()}" update="@form" value="Print"/>
</h:form>
控制器
@Named
public Controller {
private String property;
public void setProperty() ...
public String getProperty() ...
public void print() {
org.omnifaces.util.Faces.sendFile("".getBytes(), "file.pdf", true);
}
}
的成就是:
- 进入没有txt - >有关所需值的错误消息显示
- Ent在TXT ER值 - >错误信息将被删除,PDF将被发送回浏览器
会发生什么:
- 输入no TXT - 大约需要值>错误信息显示
- 进入值在txt->错误信息不被移除,PDF被发送回浏览器
原因很明显,因为只有一个请求已发送到服务器。
所以我尝试:
<h:form id="#{cc.clientId}>
<p:inputText id="txt" value="#{controller.property}" required="true"/>
<p:message for="txt"/>
<p:commandButton actionListener="#{controller.print()}" update="@form" value="Print">
<p:ajax event="click" update="@form"/>
</p:commandButton>
</h:form>
,但仍然只是一个请求被发送到服务器。
旁注:显示PDF在页面中正常工作,但将表单放入PDF不再显示。但首先我感兴趣的解决方案发送两个请求。
Thx提前,马库斯
感谢,实际上这是一种更好的解决方法,因为最初我不想立即进行验证(确实希望在打印前点击确认)。但实际上我会用这个解决方法。谢谢。 – markush81