开发者

Can I trigger an IceFaces action using JavaScript?

If I have a simple button:

   <ice:panelGroup> 
            <ice:commandButton value="foobar" 
            action="#{fileManager.openNoFlashVisiblePopup}" />
   </ice:panelGroup>

Is it possible to trigger the action openNoFlashVisiblePopup using just javascript? I know that there IceFaces has a JavaScript bridge but I don't know see a simple way to do just this.

i need to do this because I have a chunk of JavaScript that detects Flash and I need to show a IceFaces po开发者_开发知识库pup.


One way is to get the button element by ID and call its click() function.

document.getElementById('clientId').click();

You only need to give the form and button a fixed id so that you can use the generated HTML ID as clientId in Javascript code.


I know I'm a little late in seeing this, but the correct way to handle this (minus perhaps the overly exhuberant error checking) is:

        // There's a <div> that looks like: <div class="portletfaces-bridge-body" id="A8660">.
    // We'll find it and pull out the value of the ID to build elementId like: A8660:wtfForm:editeventparent
    var div = null; 
    var divCollection = document.getElementsByTagName("div");
    for (var i=0; i<divCollection.length; i++) {
        if(divCollection[i].getAttribute("class") == "portletfaces-bridge-body") {
            div = divCollection[i];
            break;
        } 
    }
    if (div == null){
        alert("could not find div portletfaces-bridge-body.");
        return;
    }

    // Pull the id out of divInnerText.
    var id = div.getAttribute("id");
    if (id == null){
        alert("id was null");
    }

    // prepare initializes fields to null so rendered cannot begin until both itemId and parentId are set.
    var prepare = document.getElementById(id + ":wtfForm:editeventprepare");
    if (prepare == null){
        alert("editeventprepare element was not found.");
        return;
    }
    prepare.click();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜