新手在这里javascript。尝试使用我在网上找到的示例访问RichFaces组件的内部,但没有太多运气。
RichFaces 3.3和JSF 1.2,jboss服务器,Chrome,ant。
我见过像
这样的例子#{rich:component(formId)}
RichFaces.$(stHourId)
但是在执行时都没有被识别出来。 那么我该如何使用它们或以其他方式访问它们呢?
在javascript中访问rich:comboBox的值列表 - 在网络上找到一个示例
var valueArray = #{rich:component(formId)}.comboList.itemsValue;
页面加载时出现错误:未捕获的SyntaxError:意外的令牌。 当我查看开发人员工具控制台中的代码时,#{rich:component(formid)} 完全缺失(导致其他问题)
var valueArray = .comboList.itemsValue;
如果我删除该行但是在代码中断,并尝试在控制台中手动使用#{rich:component ...},
#{rich:component('form:recurStartMincomboboxField')}
我得到:未捕获的SyntaxError:意外的令牌ILLEGAL 或
RichFaces.$('form:recurStartMincomboboxField')
另一个错误:未捕获TypeError:RichFaces。$不是函数
我知道表单ID是正确的,因为以下方法有效,但我似乎无法从此处访问值列表
document.getElementById('form:recurStartMincomboboxField')
如果你想在上下文中查看相关部分:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<head>
<script>
function checkMinute(formId, defaultVal) {
alert('validateMinute');
var minuteStr = document.getElementById(formId).value;
// get list of values allowed for the combobox
var valueArray = #{rich:component(formId)}.comboList.itemsValue;
}
</script>
</head>
<body>
<h:form id="form">
......
<rich:comboBox id="recurStartMin" value="#{filterManagerBean.recurStartMin}" required="false"
selectFirstOnUpdate="true" defaultLabel="" enableManualInput="true" width="50"
onchange="checkMinute('form:recurStartMincomboboxField', '00')"
>
<f:selectItems value="#{filterManagerBean.minuteOptions}" />
</rich:comboBox>
......
</h:form>
</body>
</html>
一直在尝试各种各样的事情和搜索,非常沮丧:(
答案 0 :(得分:1)
您缺少facelets
,添加
xmlns:ui="http://java.sun.com/jsf/facelets"
此extended example显示使用jQuery
和val()
来处理此问题。与任何非常新的一样,教程首先使用示例中的数据和细节来解决小问题。
答案 1 :(得分:1)
#{rich:component('recurStartMincomboboxField')}
这是表达式语言(EL)而非JavaScript,请参阅tutorial。
您无法在客户端执行EL,因为服务器可以使用它(它有点像内联Java代码)。 EL表达式在页面加载时执行,因此如果要使用它,您必须事先知道id,或者必须在服务器上提供id。或者您可以使用纯JavaScript:
document.getElementById('form:recurStartMincomboboxField').component
RichFaces 3中没有 RichFaces.$
。