2012-06-08 2 views
1

Поскольку я не специалист по javascript или jsf, я спрашиваю, можно ли определить глобальную переменную, а затем передать ее как параметр для привязки к действию метод. Может быть, это более ясно на примере ... :)Использовать глобальную переменную как параметр для связанного с действием метода

В моем Xhtml коде должно быть что-то вроде этого:

... 
<script type="text/javascript"> 
    var isEdit = "false"; 

    //<![CDATA[ 
    function editSelected(selBox, inputFiled) 
    { 
     var htmlstring = selBox.options[selBox.selectedIndex].text; 
     inputFiled.value = htmlstring; 
     isEdit = "true"; 
    } 
    //]]> 
</script> 

... 

<h:commandLink 
    styleClass="waiButton" 
    value="#{lakshmiMsg.commonButtonAdd}" 
    action="#{detailController.addCreator(**isEdit**)}" 
    rendered="#{detailModel.mode != detailModel.viewMode}"> 
</h:commandLink> 
... 

Было бы что-то подобное возможно? Если нет, могут быть другие способы?

ответ

1

Вы можете изменить скрытое поле ввода JS. Например.

<h:inputHidden id="edit" value="#{bean.edit}" /> 

с

document.getElementById("form:edit").value = isEdit; 

Альтернативой является просто не делать editSelected() работу в JS, но вместо того, чтобы сделать работу в чистом JSF с <f:ajax> магии. Поскольку функциональные требования для этого не ясны, потому что код является неполным, а не самодокументированным, я не могу дать для этого пример запуска.

1

Что-то вроде этого, вероятно, лучше обрабатывается, позволяя вашему JavaScript обновлять скрытое поле формы. Действие на commandLink оценивается на сервере, а функция JavaScript выполняется в браузере.

С помощью скрытого поля формы вы можете проверить его в методе addCreator (а не как параметр, но из запроса), чтобы увидеть, находитесь ли вы в режиме редактирования.

Смежные вопросы