首先,我是Java EE的新手,来自强大的ASP .NET开发背景.我已经浏览了网络,我可能会错过这个,但似乎没有关于如何将支持bean类连接到JSF组件的简单直接的教程.
一个很好的例子是这样的,目前我正在尝试创建一个JSF页面,其中有一组链接作为菜单栏和一组表单.我打算做的是,当点击一个链接时,将呈现一个特定的表单.
在ASP.NET中,我可以轻松检索元素,然后将属性设置为可显示.我想知道在JSF中是否有简单的方法(哎呀,甚至任何方式).
表单已经在页面中,只需在单击特定链接时将"render"属性设置为true即可.
我想在我的*.xhtml页面上放一个打包游戏.(我使用的是jsf 2和primefaces 3.5)
然而,
当我在xhtml中"翻译"html页面时,我在此脚本中收到错误:
<script>
var el = document.getElementById("pacman");
if (Modernizr.canvas && Modernizr.localstorage &&
Modernizr.audio && (Modernizr.audio.ogg || Modernizr.audio.mp3)) {
window.setTimeout(function () { PACMAN.init(el, "./"); }, 0);
} else {
el.innerHTML = "Sorry, needs a decent browser<br /><small>" +
"(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)</small>";
}
</script>
Run Code Online (Sandbox Code Playgroud)
在线:
if (Modernizr.canvas && Modernizr.localstorage &&
Run Code Online (Sandbox Code Playgroud)
我得到:
实体名称必须紧跟实体引用中的"&".
知道怎么解决这个问题吗?
Facelets依赖XML命名空间来使用XHTML.HTML 4如何,据我所知,HTML 5不支持名称空间.HTML 5还有一些XHTML中没有的新元素.甚至HTML 4和XHTML在它们支持的元素和属性方面也存在一些差异.
问题是:是否可以使用Facelets呈现HTML 4/5文档?如果是这样,怎么样?
我已经完成了关于Facelets模板的教程.
现在我尝试创建一个与模板不在同一目录中的页面.我有页面样式的问题,因为样式用相对路径引用,如下所示:
<link rel="stylesheet" href="style_resource_path.css" />
Run Code Online (Sandbox Code Playgroud)
我可以通过以下开头使用绝对引用/
:
<link rel="stylesheet" href="/project_root_path/style_resource_path.css" />
Run Code Online (Sandbox Code Playgroud)
但是,当我将应用程序移动到不同的环境时,这将给我带来麻烦.
所以我想知道在Facelets中引用CSS(以及JS和图像)资源的最佳方法是什么?
我一直在寻找一种在JSF页面中嵌入和调用javascript函数的方法.我也在使用RichFaces.
要定义该功能,似乎我可以跨浏览器支持的方式执行此操作:
<a4j:outputPanel ajaxRendered="true">
<f:verbatim>
<script type="text/javascript">
function datum() {
alert("hi");
}
</script>
</f:verbatim>
</a4j:outputPanel>
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在页面加载时调用此函数,以便返回的文本嵌入到h:outputPanel
.计划是在页面中嵌入一个js时钟,然后提供给客户端.注意我没有使用body标签,我正在使用facelets ui:composition
,f:view
(core)和RF RI rich:page
.
谢谢
可能重复:
javax.servlet.ServletException:错误解析/page.xhtml:元素的内容必须包含格式良好的字符数据或标记
这是一个jsf 2.0项目.
xhtml文件:
<?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">
<h:head>
<title>Ring</title>
<h:outputScript library="js" name="jquery-1.8.1.min.js" />
<h:outputScript library="js" name="processing-1.4.1.js" />
<script type="text/javascript">
$(function(){
var pjs = Processing.getInstanceById("viz");
var json = #{TableMatchesBean.json};
var data = eval("("+json+")");
if(data) {
for(i=0; i<data.segments.length; i++) {
var segment = data.segments[i];
pjs.addSegment(segment.label, segment.count,segment.isMain);
}
}
}); //end ready
</script>
</h:head>
<h:body>
<canvas id ="viz" data-processing-sources="common.pde"></canvas>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
在javascript的for循环的第一行,
for(i=0; i<data.segments.length; i++) {
Run Code Online (Sandbox Code Playgroud)
Netbeans引发了这个错误:"致命错误:元素类型"data.segments.length"必须后跟属性规范,">"或"/>"."
此错误表明"<"被解释为某些xhtml,而不是js(我认为).这是Netbeans的错误还是js和xhtml之间确实存在混淆?
我不得不更改<script> ... </script>
JSF 页面中的 a 并尝试评估脚本内的 JSF 组件。EL 已评估,但标签本身未受影响。
这种行为的原因是什么?
例子:
<script type="text/javascript">
//<![CDATA[
function doSomething() {
$('.userNode').droppable({
activeClass : 'ui-state-active',
hoverClass : 'ui-state-highlight',
tolerance : 'intersect',
drop : function(event, ui) {
<h:panelGroup rendered="#{myBean.useThis}">
alert("code A");
</h:panelGroup>
<h:panelGroup rendered="#{!myBean.useThis}">
alert("code B");
</h:panelGroup>
}
});
};
//]]> </script>
Run Code Online (Sandbox Code Playgroud)
EL#{!myBean.useThis}
被评估为真/假,但<h:panelGroup>
在渲染结果中。
为什么?
升级到 Mojarra 2.2.3 后,我发现了一些奇怪的行为。以下 Javascript 声明被破坏:
在 .xhtml 文件中:
<script type="text/javascript">
<!-- /* <![CDATA[ */
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
/* ]]> */-->
</script>
Run Code Online (Sandbox Code Playgroud)
这被混淆成以下废话:
<script type="text/javascript">
<!-- /* <![CDATA[ */
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
/* ]]> */-->
</script>
Run Code Online (Sandbox Code Playgroud)
这会破坏 .xhtml 文件中嵌入的所有 javascript 代码。我确认我们之前使用的版本 (2.0.x) 不会发生这种情况,所以我必须假设它与新的 Mojarra 版本有关。关于如何解决此问题或解决此问题的任何想法?
jsf ×7
facelets ×5
javascript ×4
jsf-2 ×3
xhtml ×3
cdata ×1
components ×1
html5 ×1
jsf-2.2 ×1
netbeans ×1
resources ×1
richfaces ×1
templating ×1
xml ×1