Java – primefaces 3.0 – exceptions in node selection when the tree is in a

This problem is mainly aimed at the primefaces development team, but maybe others know the solution I can't upload screenshots on primefaces support forum, but I can link to my question here

Report on primefaces support forum: http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=14022

I have a < p: tree > that sets the selection = "single" mode in my webapp When < p: tree >, node selection works normally Not in < p: dialog box >, as shown in the following figure:

However, when < p: tree > is in the dialog box, the server will throw an exception every time you click a node in the browser Choose never to register on the secondary bean:

Each time a user in the browser clicks the tree node, the following stack trace will appear in my server log:

27-Jul-2011 3:21:52 PM com.sun.faces.context.PartialViewContextImpl processPartial
INFO: java.lang.NullPointerException
java.lang.NullPointerException
    at org.primefaces.component.tree.TreeRenderer.decode(TreeRenderer.java:53)
    at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1181)
    at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506)
    at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1589)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
    at javax.faces.component.UIForm.visitTree(UIForm.java:344)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
    at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376)
    at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252)
    at javax.faces.context.PartialViewContextwrapper.processPartial(PartialViewContextwrapper.java:183)
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

This is an illegal primefaces method:

@Override
public void decode(FacesContext context,UIComponent component) {
    Tree tree = (Tree) component;
    Map<String,String> params = context.getExternalContext().getRequestParameterMap();
    String clientId = tree.getClientId(context);
    TreeModel model = new TreeModel((TreeNode) tree.getValue());

    if(tree.getSelectionMode() != null) {
        String selection = params.get(clientId + "_selection");

        String instantUnselection = params.get(clientId + "_instantUnselection");
        boolean isSingle = tree.getSelectionMode().equalsIgnoreCase("single");

        if(selection.equals("")) {
            if(isSingle)
                tree.setSelection(null);
            else
                tree.setSelection(new TreeNode[0]);
        }
        else {
            String[] selectedRowKeys = selection.split(",");

            if(isSingle) {
                TreeNode selectedNode = treeExplorer.findTreeNode(selectedRowKeys[0],model);
                tree.setSelection(selectedNode);
            }
            else {
                TreeNode[] selectedNodes = new TreeNode[selectedRowKeys.length];

                for(int i = 0 ; i < selectedRowKeys.length; i++) {
                    selectedNodes[i] = treeExplorer.findTreeNode(selectedRowKeys[i],model);
                    model.setRowIndex(-1);  //reset
                }

                tree.setSelection(selectedNodes);
            }
        }
    }

    decodeBehaviors(context,component);
}

The line causing the exception is as follows:

if(selection.equals("")) {

In the case of < p: tree >, the value of selection in < p: dialog > is always null

Do you know how to solve this problem?

I'm using today's PF 3.0-m3-snapshot version The same is true for PF 3.0-m2 In IE 7 and Firefox 4.0 All showed the same behavior in 1

Solution

Discuss on primefaces forum Similar problems found by other users

Opened PrimeFaces issue ticket here.

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>