您好我正在开发一个ADF Web应用程序。在这里我有test.jsf页面和showPrintablePage行为命令按钮。当用户点击按钮时,adf只会在新窗口中显示可打印的页面。但是当用户点击按钮时,它应该直接显示在浏览器的打印窗口中。为此,我从ADF Code Corner获得了以下代码。
public void beforePhaseMethod(PhaseEvent phaseEvent) {
if (phaseEvent.getPhaseId() == PhaseId.RENDER_RESPONSE) {
FacesContext fctx = FacesContext.getCurrentInstance();
AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
if (adfFacesContext.getOutputMode() == OutputMode.PRINTABLE) {
ExtendedRenderKitService erks = null;
erks = Service.getRenderKitService(fctx, ExtendedRenderKitService.class);
erks.addScript(fctx, "window.print();");
}
}
}
我已经完成了文档中指定的过程。接下来是test.jsf页面代码。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="http://xmlns.oracle.com/adf/faces/rich" prefix="af"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<f:view beforePhase="#{viewScope.PieBean.beforePhaseMethod}">
<af:document title="printTest" id="d1">
<af:form id="f1">
<af:commandButton text="commandButton 1" id="cb1">
<af:showPrintablePageBehavior/>
</af:commandButton>
<af:goButton text="goButton 1" id="gb1"/>
</af:form>
</af:document>
</f:view>
但它在test.jsf属性检查器中显示beforePhaseMethod是一个未知属性。
最终结果如下 请帮忙。 提前谢谢。
答案 0 :(得分:0)
您是否在 adfc-config 中注册了bean,或者您是否正在使用任务流,那么在任务流配置中。同样从截图中,您似乎得到了所需的输出。