从javascript运行jsf托管bean方法

时间:2011-05-24 14:47:22

标签: javascript jsf richfaces

我是JS的新手,面临使用javascript管理bean的问题。

我试图通过h:inputHidden来做到这一点,但仍然没有正确的行为。

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

和我的剧本

<script type="text/javascript">
        function func(){
            var varFromBean = document.getElementById('myForm:myVariable').value;
            ....
        }

</script>

我做错了吗? 还有另一种通过运行托管bean方法来定义JS变量的方法吗?

提前致谢!

修改

我需要丰富的日历:日历自定义。我需要允许用户从特定时期选择日期。

<rich:calendar value="#{bean.selectedDate}"
               isDayEnabled="disableDays" dayStyleClass="disabledDaysStyle"
               firstWeekDay="1"/>

完整的JavaScript是:

<script type="text/javascript">
        function disableDays(day){
            var curDt = new Date();
            if (curDt == undefined){
                curDt = day.date.getDate;
            }
            var period = document.getElementById('form:period').value;
            if ((curDt.getTime() + period) &gt; day.date.getTime()) return true;
            if (curDt.getTime() &lt; (day.date.getTime()))  return true;
            else return false;
        }
        function disabledDaysStyle(day){
            if (!disableDays(day)) return 'rich-calendar-boundary-dates';
        }
</script>

2 个答案:

答案 0 :(得分:1)

要从JS中隐藏的JSF输入获取托管bean值,您可以通过以下方式使用jQuery:

首先使用h:inputText来定义jQuery('classForSearch')中的搜索类。要隐藏输入,它会添加简单的CSS类('inpt-hidden'):

<style>
    .inpt-hidden { display: none; }
</style>

<h:inputText value="#{bean.myVariable}" styleClass="inpt-hidden classForSearch" />

之后,您将能够使用jQuery访问它:

<script type="text/javascript">
        function func(){
            var varFromBean = jQuery('.classForSearch').val();
            ....
        }

</script>

热门设置jQuery,您可以在http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery#Setup

找到

答案 1 :(得分:0)

尝试在客户端获取元素值时,不会运行托管bean方法。它只返回页面加载后已存在的值。要运行方法,您可以使用a4j:jsFunction(或其模拟,如果您不使用jsf 1.2)和您需要的参数。