Могу ли я вызвать действие IceFaces, используя JavaScript? - PullRequest
0 голосов
/ 22 сентября 2010

Если у меня есть простая кнопка:

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

Можно ли вызвать действие openNoFlashVisiblePopup, используя только javascript? Я знаю, что в IceFaces есть мост JavaScript, но я не знаю простого способа сделать это.

Мне нужно сделать это, потому что у меня есть фрагмент JavaScript, который обнаруживает Flash, и мне нужно показать всплывающее окно IceFaces.

Ответы [ 2 ]

1 голос
/ 22 сентября 2010

Один из способов - получить элемент кнопки по идентификатору и вызвать его функцию click().

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

Вам нужно только присвоить форме и кнопке фиксированный id, чтобы вы могли использовать сгенерированный HTML-идентификатор как clientId в коде Javascript.

0 голосов
/ 20 февраля 2012

Я знаю, что немного опоздал, увидев это, но правильный способ справиться с этим (за исключением, возможно, чрезмерно обильной проверки ошибок):

        // 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();
...