Oracle ADF 11g后台常用方法(2)

1.获取request

    public HttpServletRequest getHttpRequest() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = 
            (HttpServletRequest)context.getExternalContext().getRequest();
        return request;
    }

2.后台获取树结构点击行的方法

    public void selectSendPerson(SelectionEvent selectionEvent){
        Map viewScope = AdfFacesContext.getCurrentInstance().getViewScope();
        RichTree tree = (RichTree)selectionEvent.getSource();
        CollectionModel model = (CollectionModel)tree.getValue();
        JUCtrlHierBinding treeBinding = (JUCtrlHierBinding)model.getWrappedData();
        String methodExpression = "#{bindings." + treeBinding.getName() + ".treeModel.makeCurrent}";
        this.handleTreeSelection(selectionEvent, methodExpression);
        RowKeySet rks = selectionEvent.getAddedSet();
        Iterator iterator = rks.iterator();
        if (iterator.hasNext()) {
            List rowKey = (List)iterator.next();
            JUCtrlHierNodeBinding node = treeBinding.findNodeByKeyPath(rowKey);
            JUCtrlHierTypeBinding nodeType = node.getHierTypeBinding();
            Row rw = node.getRow();
            Object leaf = rw.getAttribute("LeafNode");
        }
    }
    private void handleTreeSelection(SelectionEvent selectionEvent, String el) {
        FacesContext fctx = FacesContext.getCurrentInstance();
        ELContext elctx = fctx.getELContext();
        ExpressionFactory exprFactory = fctx.getApplication().getExpressionFactory();

        MethodExpression me =
            exprFactory.createMethodExpression(elctx, el, Object.class, new Class[] { SelectionEvent.class });
        me.invoke(elctx, new Object[] { selectionEvent });

    }

3.后台获取face-config.xml中的配置信息并跳转

    public void navToOutCome(String outCome) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        Application application = facesContext.getApplication();
        NavigationHandler navigationHandler = application.getNavigationHandler();
        ControllerContext controllerContext = ControllerContext.getInstance();
        String viewId = controllerContext.getCurrentViewPort().getViewId();
        if (viewId != null) {
            navigationHandler.handleNavigation(facesContext, viewId, outCome);
        }
    }

4.ADF的scope获取方式

    ADFContext.getCurrent().getApplicationScope(); 
    ADFContext.getCurrent().getSessionScope(); 
    AdfFacesContext.getCurrentInstance().getPageFlowScope();
    ADFContext.getCurrent().getRequestScope(); 
    ADFContext.getCurrent().getViewScope();

5.11g弹框

    <af:popup childCreation="deferred" autoCancel="disabled" id="p2" binding="#{testBean.pop}" contentDelivery="immediate">
        <af:dialog id="d2" type="ok" closeIconVisible="false">
            <f:facet name="buttonBar"/>
            <af:panelGroupLayout id="pgl3" layout="scroll" halign="center" inlineStyle="width:160px;height:60px">
                <p>
                    <h:outputText id="ot3" binding="#{TaskApproveBean.outmessage}" value="NULL"/>
                </p>
            </af:panelGroupLayout>
        </af:dialog>
    </af:popup>

    private RichPopup pop;
    private HtmlOutputText outmessage = new HtmlOutputText();
    public void showPop(String message) {
        this.outmessage.setValue(message);
        this.pop.show(new RichPopup.PopupHints());
    }

6.弹出提示框

    public void showInfoMessage(String Msg) {
        FacesMessage m = new FacesMessage();
        m.setDetail(Msg);
        m.setSeverity(FacesMessage.SEVERITY_INFO);
        FacesContext.getCurrentInstance().addMessage(null, m);
    }

7.页面布局常用的标签

    <af:panelGroupLayout id="pgl1"/> <!--一片区域类是div 有水平和垂直 -->
    <af:panelFormLayout  id="p2" />  <!--自动排列form表单元素 -->
    <af:panelGridLayout id="p3" />   <!--表格布局 -->

8.点击页面按钮在当前按钮坐标弹出选值框

    <af:inputText id="USERCODE" columns="40" label="人员编码" disabled="true" contentStyle="width:500px;" inding="#{testBean.bdUserCode}"/>
    <af:commandLink id="c2" >
        <af:image id="i3" source="../images/search.png"/>
        <af:showPopupBehavior popupId="myPopup" triggerType="action" align="endBefore" alignId="c2" />
    </af:commandLink>

    <af:popup id="myPopup" launcherVar="source" contentDelivery="lazyUncached" 
                         eventContext="launcher" binding="#{testBean.windowPopUp}"  popupFetchListener="#{testBean.winPopFechListener}">

    </af:popup>

    ClientListenerSet set = new ClientListenerSet();
    set.addBehavior("new AdfShowPopupBehavior('myPopup',AdfRichPopup.ALIGN_AFTER_END,null,'focus')");

9.eo中添加create方法在执行#{binding.create.execute}自动执行初始化序列

    protected void create(AttributeList attributeList) {
        super.create(attributeList);
        SequenceImpl s = new SequenceImpl("TEST_SEQ", this.getDBTransaction());
        Long next = (Long)s.getData();
        try{
            this.setId(next.toString());
        }catch(Exception e){
            e.printStackTrace();
        }
    }

10.oracle.jbo.RowInconsistentException: JBO-25014: 其他用户已更改具有主键 oracle.jbo.Key[2332] 的行。
异常解决方法:在EOImpl中加入以下代码

    public void lock() {
       try { 
               super.lock(); 
           } catch (RowInconsistentException e) {
               e.printStackTrace(); 
               refresh(REFRESH_WITH_DB_ONLY_IF_UNCHANGED | REFRESH_CONTAINEES);
               System.out.println("已被处理的异常信息:"+new java.util.Date().toLocaleString()+" 更新时出现锁异常!");
               super.lock(); 
           } 
   }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值