ADF调用window打印

打印说明:

1 打印的页面不是jsff

2执行打印的button只打印button所在页面的父区域


具体步骤:

1在页面的beforePhase 指定method,代码如下:

<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
        beforePhase="#{Bean.beforePhaseMethod}">


    public void beforePhaseMethod(PhaseEvent phaseEvent) {
        if (phaseEvent.getPhaseId() == PhaseId.RENDER_RESPONSE) {
            FacesContext fctx = FacesContext.getCurrentInstance();
            //check internal request parameter
            Map requestMap = fctx.getExternalContext().getRequestMap();
            Object showPrintableBehavior = requestMap.get("oracle.adfinternal.view.faces.el.PrintablePage");
            if (showPrintableBehavior != null) {
                if (Boolean.TRUE == showPrintableBehavior) {
                    ExtendedRenderKitService erks = null;
                    erks = Service.getRenderKitService(fctx, ExtendedRenderKitService.class);
                    //invoke JavaScript from the server
                    erks.addScript(fctx, "window.print();");
                }
            }
        }
    }

    public String print() {
        // Add event code here...
        FacesContext facesContext = FacesContext.getCurrentInstance();

        org.apache.myfaces.trinidad.render.ExtendedRenderKitService service =
            org.apache.myfaces.trinidad.util.Service.getRenderKitService(facesContext, ExtendedRenderKitService.class);

        service.addScript(facesContext, "window.print();");
        return null;
    }

如果是jsff页面我们如何实现打印呢?

1:编写manageBean实现RegionController接口:

public class Bean implements RegionController {
    public Bean() {
        super();
    }

    @Override
    public boolean refreshRegion(RegionContext regionContext) {
        int refreshFlag = regionContext.getRefreshFlag();
        FacesContext fctx = FacesContext.getCurrentInstance();
        //check internal request parameter
        Map requestMap = fctx.getExternalContext().getRequestMap();

        Object showPrintableBehavior = requestMap.get("oracle.adfinternal.view.faces.el.PrintablePage");
        if (showPrintableBehavior != null) {
            if (Boolean.TRUE == showPrintableBehavior) {
                ExtendedRenderKitService erks = null;
                erks = Service.getRenderKitService(fctx, ExtendedRenderKitService.class);
                erks.addScript(fctx, "window.print();");
            }
        }
        regionContext.getRegionBinding().refresh(refreshFlag);
        return false;
    }

    @Override
    public boolean validateRegion(RegionContext regionContext) {
        regionContext.getRegionBinding().validate();
        return false;
    }

    @Override
    public boolean isRegionViewable(RegionContext regionContext) {
        return regionContext.getRegionBinding().isViewable();
    }

    @Override
    public String getName() {
        // TODO Implement this method
        return null;
    }

}


2: 找到页面定义文件:





最后一种办法是直接调用window.print函数,如:


         <af:button text="button 1" id="b1">
                <af:clientListener type="action" method="dd"/>
            </af:button>

    <af:resource type="javascript">
        function dd(event){
            window.print();
        }
    </af:resource>

rendered="#{adfFacesContext.outputMode!= 'printable'}"

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值