在显示值#{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;
}
您不能通过将其作为value
属性来运行javascript
。如果你的javascript
是包含在h:textOutput
以下,你可以得到的值,并改变它的客户端与javascript。
改变:
function get_vocab(inp)
{
// ... rest of your logic ...
}
:
function get_vocab()
{
var span = document.getElementById("vocab_value");
var inp = span.innerText;
// ... rest of your logic without return ...
span.innerText = y;
}
你的jsf代码
<h:outputText id="vocab_value" value="#{row.currentString}" styleClass="#{row.displayClass}" />