Как получить значение бина в сценарии Java по нажатию кнопки - PullRequest
0 голосов
/ 10 января 2012

Не могли бы вы помочь мне в этом?Я пытаюсь получить значение из поддерживающего компонента в моем javascript по нажатию командной кнопки.

это моя командная кнопка jsf

   <h:commandButton id="me" value="test" action="#{ques.conversiontostring}"
         onclick="mystring()"/>

это моя функция javascript

   function mystring()
    {
    var mystring = window.document.getElementById("form:me").click(); 
    alert(mystring);

    }

мой бин возвращает строку, которую я храню в переменной mystring, но когда я предупреждаю, я получаю нулевое значение.было бы здорово, если бы кто-то помог в этом.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 января 2012

Я так понимаю, что вы хотите показать строковое значение, которое было установлено методом действия? Вы можете показать его только после его завершения. Вы должны понимать, что JSF и JS не работают синхронно, как вы ожидаете от кодирования. JSF - это генератор кода HTML. JS работает только на текущем дереве HTML DOM. Вам нужно позволить JSF генерировать HTML-код таким образом, чтобы JS-код выполнялся, как только HTML-ответ поступает в веб-браузер.

Предполагая, что у вас есть этот JS:

function show(string) {
    alert(string);
}

И при условии, что у вас есть этот боб:

private String message;

public void show() {
    message = "Hello!";
}

public String getMessage() {
    return message;
}

Если вы используете JSF 1.x, используйте следующий подход:

<h:commandButton value="show" action="#{bean.show}" />
<h:panelGroup rendered="#{not empty bean.message}">
    <script>show('#{bean.message}');</script>
</h:panelGroup>

Если вы используете JSF 2.x, который поддерживает ajax, вы можете альтернативно использовать следующий подход:

<h:commandButton value="show" action="#{bean.show}">
    <f:ajax render="message" />
</h:commandButton>
<h:panelGroup id="message">
    <h:panelGroup rendered="#{not empty bean.message}">
        <script>show('#{bean.message}');</script>
    </h:panelGroup>
</h:panelGroup>
0 голосов
/ 10 января 2012

Ты имеешь в виду что-то подобное?

<h:commandButton id="me" value="test" action="#{ques.conversiontostring}"
     onclick="myFunction('#{ques.mystring}')"/>

function myFunction(message)
{
  alert(message);
}
...