Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在jsf页面中执行Javascript_Javascript_Jsf_Facelets - Fatal编程技术网

Can';t在jsf页面中执行Javascript

Can';t在jsf页面中执行Javascript,javascript,jsf,facelets,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/

我是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>

功能测试(){
警报(“测试”);
警报(document.getElementById('frmDashBoard:testbt').value);
}

除了这个小写/大写输入错误(顺便说一句,这不会导致函数根本没有被调用),您的具体问题是因为这个页面是使用
设计为模板客户端的。在运行期间,Facelets会忽略
标记之外的任何内容。此内容仅对可视化web设计器有用,但一旦在运行时编译并执行,它就会被完全忽略。相反,作文的内容将插入主模板中,即您的案例中的
commonLayout

您需要将
元素放在
中,这样它将被纳入最终的Facelets组合中

<ui:define name="...">
    <script>
        ...
    </script>
    ...
</ui:define>
由于使用了
target=“head”
,在构建视图期间,它将自动重新定位到HTML

另见:

任何在ui:composition之外定义的内容都将被忽略。因此,将您的内容放在该标记内,它将起作用: 大概是这样的:

<ui:composition template="/WEB-INF/tags/layout.xhtml"> 
<ui:include src="/tags/common.xhtml"></ui:include>  
<ui:define name="content">
<h:outputScript name="validation.js" library="javascript"></h:outputScript>


为了重现具体问题,是否所有这些包括、表格、分隔符、标题、样式都是绝对必要的?不请从代码段中省略它们。这只会增加问题的噪音,让专家更难通过查看代码来“发现”问题。对于这个问题和将来的问题,请尝试创建尽可能小的独立测试代码段,基本上只需复制“粘贴”“运行”即可查看具体问题。对于由此造成的不便,我深表歉意。我已删除了不必要的部分。请参阅更新版本。谢谢
<ui:composition template="/WEB-INF/tags/layout.xhtml"> 
<ui:include src="/tags/common.xhtml"></ui:include>  
<ui:define name="content">
<h:outputScript name="validation.js" library="javascript"></h:outputScript>