在h:outputtext值上运行Javascript

时间:2015-08-23 01:32:42

标签: javascript jsf

在显示值#{row.currentstring}之前,似乎无法让下面的代码运行javascript。 下面是负责显示值

的JSF代码
    <rich:column styleClass="#{row.displayClass}" >
        <f:facet name="header">
        <h:outputText value="#{bundle.currentvocab}" />
        </f:facet>
        <h:outputText id="vocab_value" value="get_vocab('#{row.currentString}')" styleClass="#{row.displayClass}" />
    </rich:column>

这里get_vocab是我正在运行的javascript,如下所示:

        function get_vocab(inp)
{
var b = "car";
var c = "propose";
var d = "check";
var x;
var y;
if (inp.indexOf(b) > -1) {
    x = inp.indexOf(b);
    y = inp.substring(0,x+3);
}
else if (inp.indexOf(c) > -1) {
    x = inp.indexOf(c);
    y = inp.substring(0,x+7);
}
else if (inp.indexOf(d) > -1) {
    x = inp.indexOf(d);
    y = inp.substring(0,x+5);
}
else {
    y = "value not found"
}
return y;
}

1 个答案:

答案 0 :(得分:0)

javascript作为value属性,您无法运行javascript。如果您的h:textOutput包含在function get_vocab(inp) { // ... rest of your logic ... } 下方,则可以获取该值,并使用javascript将其更改为客户端。

更改:

function get_vocab()
{
  var span = document.getElementById("vocab_value");
  var inp = span.innerText;
  // ... rest of your logic without return ...
  span.innerText = y;
 }

要:

 <h:outputText id="vocab_value" value="#{row.currentString}" styleClass="#{row.displayClass}" />

您的jsf代码

CAShapeLayer