[英]JSF doesn't generate HTML output, instead plain JSF source code is visible in HTML output
我正在完成课程的最终作业,而JSF和HTML5出现了一些问题。 在问这个之前,我先阅读了这个和这个答案。
在我的项目设置(属性->项目构面)中,我具有:
我分开创建了HTML5文件,现在我想将Java软件与前端代码合并。 但是我遇到了问题,JSF无法呈现.html文件。
这是我的原始HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE HTML>
<html xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="author" content="Fernando Paladin">
<title>Locus - Disciplinas </title>
<link href="../../css/bootstrap.css" rel="stylesheet">
<link href="../../css/custom.css" rel="stylesheet">
</h:head>
<h:body>
<div class="container">
<div class="row">
<div class="col-lg-8 center">
<h:form role="form">
<div class="form-group">
<div class="col-md-10">
<h:inputText id="disciplina" class="form-control" value="#{disciplinaMBean.nome}" />
<!-- <input type="text" size="20" class="form-control" id="disciplina" placeholder="Pesquise ou crie uma nova disciplina"
required> -->
</div>
<div class="col-md-2">
<h:commandButton class="btn btn-md btn-success" action="#{disciplinaMBean.cadastrar}">
Adicionar
</h:commandButton>
<!-- <a type="button" href="#" class="btn btn-md btn-success">Adicionar</a> -->
</div>
</div>
<div class="col-md-10">
<div class="form-group">
<br/>
<h:dataTable value="#{disciplinaMBean.listaDisciplinas}" var="disciplina">
<h:column>
<f:facet name="header">Nome</f:facet>
<h:outputText value="#{disciplinaMBean.nome}" />
</h:column>
</h:dataTable>
<!-- <textarea class="form-control" placeholder="Aqui vão ser carregadas as disciplinas" rows="5"></textarea> -->
</div>
</div>
</h:form>
</div>
</div>
</div>
<!-- JavaScripts e Complementos -->
<script src="../../js/jquery.js"></script>
<script src="../../js/bootstrap.min.js"></script>
<script src="../../js/bootstrap-progressbar.min.js"></script>
</h:body>
</html>
这是呈现的内容:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE HTML>
<html xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<meta charset="utf-8">
<meta name="description" content="">
<meta name="author" content="Fernando Paladin">
<title>Locus - Disciplinas </title>
<link href="../../css/bootstrap.css" rel="stylesheet">
<link href="../../css/custom.css" rel="stylesheet">
</h:head>
<h:body>
<div class="container">
<div class="row">
<div class="col-lg-8 center">
<h:form role="form">
<div class="form-group">
<div class="col-md-10">
<h:inputText id="disciplina" class="form-control" value="#{disciplinaMBean.nome}" />
<!-- <input type="text" size="20" class="form-control" id="disciplina" placeholder="Pesquise ou crie uma nova disciplina"
required> -->
</div>
<div class="col-md-2">
<h:commandButton class="btn btn-md btn-success" action="#{disciplinaMBean.cadastrar}">
Adicionar
</h:commandButton>
<!-- <a type="button" href="#" class="btn btn-md btn-success">Adicionar</a> -->
</div>
</div>
<div class="col-md-10">
<div class="form-group">
<br/>
<h:dataTable value="#{disciplinaMBean.listaDisciplinas}" var="disciplina">
<h:column>
<f:facet name="header">Nome</f:facet>
<h:outputText value="#{disciplinaMBean.nome}" />
</h:column>
</h:dataTable>
<!-- <textarea class="form-control" placeholder="Aqui vão ser carregadas as disciplinas" rows="5"></textarea> -->
</div>
</div>
</h:form>
</div>
</div>
</div>
<!-- JavaScripts e Complementos -->
<script src="../../js/jquery.js"></script>
<script src="../../js/bootstrap.min.js"></script>
<script src="../../js/bootstrap-progressbar.min.js"></script>
</h:body>
如您所见,我的原始文件是渲染的文件。 因此,我无法在任何字段中单击,也无法在输入中键入文本,最终我什么也不能做。
这是怎么引起的,我该如何解决?
您忘记了调用JSF的FacesServlet
。 这是负责这项工作的人。 仔细查看您在浏览器的地址栏中键入的URL,并确保它与在webapp的web.xml
中定义的FacesServlet
的<url-pattern>
相匹配。 或者,只需将<url-pattern>
更改为*.xhtml
(或*.html
,如果这是您的物理文件扩展名,并且您打算通过JSF运行所有.html
URL),那么您就无需摆弄虚拟URL。
请注意,这个问题与您最初抱怨的HTML5完全无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.