在JSF <h:outputStylesheet>
,<h:outputScript>
和<h:graphicImage>
组件具有library
属性.这是什么以及如何使用它?Web上有很多示例,它们使用如下公共内容/文件类型css
,js
以及img
(或image
)作为库名称,具体取决于所使用的标记:
<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="script.js" />
<h:graphicImage library="img" name="logo.png" />
Run Code Online (Sandbox Code Playgroud)
它有用吗?library
这些示例中的值似乎只是重复标记名称已经表示的内容.对于<h:outputStylesheet>
它来说,基于标签名称已经很明显它代表了一个"CSS库".与以下内容有什么不同,它们的工作方式相同?
<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />
Run Code Online (Sandbox Code Playgroud)
此外,生成的HTML输出有点不同.给定URL模式的上下文路径/contextname
和FacesServlet
映射*.xhtml
,前者生成以下HTML,其库名称为请求参数:
<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/style.css.xhtml?ln=css" />
<script type="text/javascript" src="/contextname/javax.faces.resource/script.js.xhtml?ln=js"></script>
<img src="/contextname/javax.faces.resource/logo.png.xhtml?ln=img" alt="" />
Run Code Online (Sandbox Code Playgroud)
而后者在URI的路径中生成以下带有库名的HTML:
<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/css/style.css.xhtml" />
<script type="text/javascript" src="/contextname/javax.faces.resource/js/script.js.xhtml"></script>
<img src="/contextname/javax.faces.resource/img/logo.png.xhtml" alt="" />
Run Code Online (Sandbox Code Playgroud)
后一种方法在事后看来也比前一种方法更有意义.该library
属性究竟有用吗?
在XHTML页面中包含另一个XHTML页面的最正确方法是什么?我一直在尝试不同的方式,但都没有.
我正在使用JSF 1.2编写的一个相当大的应用程序.JSF 1.2现在已经有6年了.我需要升级到JSF 2.0.这会有多痛苦?我注意到自定义标签中的一些属性已被更改等.
我已经完成了关于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和图像)资源的最佳方法是什么?
据我所知,对于使用@Annotations(或C#中的[Attributes]),您必须引用类元数据,以便您可以询问该类是否已注释(属性).
我的问题是JSF实现如何查找所有使用@ManagedBean注释的类?它是否扫描类路径中的所有类?或者有没有办法实际"查询"JVM的注释类?
我问这个是因为当我直接在我的web项目中添加带注释的支持bean时,没有问题.但我在JAR文件中定义的bean(可跨项目重用)未注册.有什么东西我必须告诉MyFaces指导它看哪个JAR文件?
此外,使用注释引入了许多不错的编程模式.我想知道我是否能以某种方式找到所有带注释的类......
我想使用jQuery Validate插件和JSF进行客户端表单验证.我发现导入资源的基本困难.
在我的JSF页面中
<h:outputScript library="js" name="jquery-1.6.2.js"></h:outputScript>
<h:outputScript library="js" name="jquery.validate.js"></h:outputScript>
<h:outputScript library="js" name="jquery.maskedinput.js"></h:outputScript>
<h:outputScript library="js" name="myapp.validate.js"></h:outputScript>
Run Code Online (Sandbox Code Playgroud)
当我单击Firefox中的脚本选项卡时,我无法在下拉列表中看到任何脚本文件.有一条消息显示:
如果标签具有"type"属性,则它应该等于"text/javascript"或"application/javascript".脚本也必须是可解析的(语法正确).
我的jquery效果如鼠标悬停,隐藏,显示等不起作用.我尝试使用通常的脚本标签
<script type="text/javascript" src="../js/jquery-1.6.2.js"></script>
<script type="text/javascript" src="../js/jquery.validate.js"></script>
<script type="text/javascript" src="../js/jquery.maskedinput.js"></script>
<script type="text/javascript" src="../js/myapp.validate.js"></script>
Run Code Online (Sandbox Code Playgroud)
哪个没用.仍然无法找到我的JS文件.我的所有JS文件都放在
Web pages
|_ js
|_jquery-1.6.2.js,my.validate.js,jquery.validate.js,jquery.maskedinput.js
Run Code Online (Sandbox Code Playgroud)
我尝试了使用jQuery和JSF 2.0资源发布的解决方案之一,但没有成功.
请建议我解决这个问题.我不想在ajax中使用JSF内置验证,因为我们将代码从JSP移到JSF并且已经编写了验证.我想重用我之前写过的现有jQuery验证.
一如既往,我有点困惑.
在这里https://community.jboss.org/wiki/ModularWebAppsWithJSF2我已经了解到它很容易并且开箱即用,可以在JSF 2.0之后将模板捆绑在单独的jar中.
唯一的问题是:我无法让它发挥作用.我只是在Web应用程序WEB-INF/lib中包含的jar中部署所有类型的"page.xhtml"(META-INF目录,资源目录,root;有和没有faces-config.xml)并请求一些东西像http://host/demo/faces/page.xhtml或在模板上做"包含"或"装饰".我得到一个例外.
这里Java EE6>将JSF facelets(xhtml)和ManagedBeans打包为JAR,我最喜欢的JSF老师解释了使用自定义ResourceResolver来做到这一点.当我调试资源解析我毫不怀疑这将工作,并将尝试.
这是关于力学的问题 - 这两种方法有什么区别?
究竟是在META-INF /资源中自动查找哪些资源?
我正在使用JSF 2.0.我使用tagfiles创建了自定义JSTL标记,并且在JSP中运行良好.但我也想在Facelets中使用自定义JSTL标签.是否可以在Facelets中创建标签文件?
我能够成功地使用我的应用程序中的模板:
<ui:decorate template="/WEB-INF/templates/mytemplate.xhtml">
Run Code Online (Sandbox Code Playgroud)
我还可以移动模板/META-INF/templates/mytemplate.xhtml
一的JAR和得到这个工作:
<ui:decorate template="/templates/mytemplate.xhtml">
Run Code Online (Sandbox Code Playgroud)
我实际上想把这个文件放到文件系统(或数据库)上.我怎样才能做到这一点?我发现很多相关的东西com.sun.facelets.impl.DefaultResourceResolver
,但我认为这实际上与覆盖模板的服务有关.它不是尝试解析URL,它只是试图以某种方式在类路径上获取文件.
如果多个Web应用程序需要一个jar文件,那么您会选择哪个选项?将它保存在服务器类路径中还是为每个Web应用程序的lib文件夹保留jar文件的一个副本?
jsf-2 ×9
facelets ×6
jsf ×6
java ×3
resources ×3
annotations ×1
custom-tags ×1
external ×1
include ×1
java-ee ×1
jquery ×1
managed-bean ×1
migration ×1
packaging ×1
tagfile ×1
templating ×1
xhtml ×1