沟通JSF和JS的最佳实践

时间:2017-03-07 10:08:42

标签: javascript jsf-2

我知道如何pass variables from JSF to Javascript,我通常在我的xhtml中将它们嵌入:

        <script>
            $(document).ready(function () {
                setData('#myid', '#{dataController.items}');
            });
        </script>

我不完全喜欢的是,我用Java编码JS库所需的特定格式,因此它看起来不是非常优雅/可扩展。例如,我从我的数据库中获取Map<String, Integer>,然后在Java中编码JS所需的数据,如f.ex。:

for...
   String s += "["+ ... +"," + ... + "]";

这时我需要传递类似[val1,val2], [val3, val4]...的内容,之后我会以正确的格式一次性粘贴JSON:

'data': {
            'values': [formattedVarFromJSF],

但有时我需要使用非常不同的布局,例如:

'data': 
                {"values":[var1FromJSF]},
                {"values":[var2FromJSF]},
...

我在JSF中编写了我不喜欢的整个{"values":[ + var(i) + ]},因为更改库意味着我需要更改我的Java代码。

我也可以使用与JSON格式相同的Java Map对象并打印它,但这似乎有点耦合。

我能找到的最好方法是将JSF与JS映射隔离,并使用它来检索数据,方法是在xhtml中打印这样的地图:

    <script>
       var kvArray = [
       <c:forEach items="#{dataController.map}" var="m">
          {key: #{m.key}, value: #{m.value}}, 
       </c...>
       ];
    </script>

然后让JS处理它,根据库或函数的具体情况进行映射。

有没有更有效和优雅的方法来解决这个问题?这方面的最佳做法是什么?

0 个答案:

没有答案