Ber*_*Ali 6 javascript jsf facelets
我是jsf的新手.我一直试图用commandbutton做一个简单的Javascript函数.我尝试了很多次,但甚至无法发出警报信息.这是我的代码的一部分.请任何人都可以指导我,并告诉我什么是错的,以及我应该做些什么来让它运行?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<script type="text/javascript">
function test(){
alert('test');
alert(document.getElementById('frmDashBoard:testbt').value);
}
</script>
</h:head>
<h:body>
<ui:composition template="../../template/commonLayout.xhtml">
<ui:define name="content">
<div>
<h:form id="frmdashboard">
<div name="form_panel" style="width: 984px">
<h:commandButton id="testbt" value="#{message.btn_dashboard_search}" action="#{searchBLAction.doAction}" onclick="test()" />
</div>
</h:form>
</div>
</ui:define>
</ui:composition>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 15
除了这个小写/大写错字(顺便说一句,这不会导致函数根本不被调用),导致您的具体问题,因为此页面被设计为模板客户端使用<ui:composition>.在运行时期间,Facelets <ui:composition>将忽略标记之外的任何内容.此内容仅对可视化Web设计人员有用,但一旦在运行时编译和执行,它就会被完全忽略.相反,组合的内容将插入主模板中,commonLayout在您的情况下.
你需要把<script>元素放在一个内部<ui:define>,这样它将被带入最终的Facelets组合中.
<ui:define name="...">
<script>
...
</script>
...
</ui:define>
Run Code Online (Sandbox Code Playgroud)
或者,更好的是,将JS函数放在文件/resources夹中的自己的JS文件中,并按如下方式引用它:
<ui:define name="...">
<h:outputScript name="some.js" target="head" />
...
</ui:define>
Run Code Online (Sandbox Code Playgroud)
多亏了target="head",它会<head>在构建视图时自动重定位到HTML 中.
| 归档时间: |
|
| 查看次数: |
21538 次 |
| 最近记录: |