相关疑难解决方法(0)

什么是JSF资源库以及如何使用它?

在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模式的上下文路径/contextnameFacesServlet映射*.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属性究竟有用吗?

resources jsf jsf-2

224
推荐指数
1
解决办法
12万
查看次数

如何在Facelets模板中引用CSS/JS /图像资源?

我已经完成了关于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和图像)资源的最佳方法是什么?

resources jsf facelets templating jsf-2

53
推荐指数
2
解决办法
6万
查看次数

避免JSF Web应用程序上的后退按钮

我正在展示非常敏感的数据.用户从我的服务器注销后,我不希望其他用户能够看到数据点击浏览器的"后退"按钮.

我怎样才能做到这一点?

browser jsf back-button

46
推荐指数
2
解决办法
4万
查看次数

javax.faces.PROJECT_STAGE的使用

我想了解'javax.faces.PROJECT_STAGE'属性对JSF应用程序的影响.下面的链接中提供了一个很好的用例

http://css.dzone.com/news/jsf-20-new-feature-preview-ser
http://www.java-tutorial.ch/java-server-faces/jsf-project-stage

除了提供验证错误消息之外,还有其他用例,这个属性真的有用吗?我知道我们可以检查这个变量来识别环境并改变某些功能,但是JSF会自动帮助开发人员吗?如果您可以分享项目的经验,那会很棒吗?

model-view-controller jsf jsf-2 jsf-1.2 web

15
推荐指数
2
解决办法
3万
查看次数

JSF性能改进

我正在使用JSF 2.2 + Primefaces开发WebApp ...项目正在快速增长,并且第一次性能测试非常差(由于我对JSF LifeCylce在非功能性需求方面的知识不足 - 即完全是ajax网站),然后我们可以改善一点,但结果仍然不如预期.(根据动作,我们有300~1500毫秒的时间,想法是性能大约500毫秒,给予或采取).主要是恢复视图阶段和渲染响应是消费者(在其他情况下,花费的时间毫无价值)的时间.对于某些操作,Invoke Aplication也需要时间(由于DB调用).

在网上阅读了很多文章后,有很多很棒的技巧要考虑(当然很多来自stackoverflow),例如:

  • 改善数据库查询

我们有一些复杂的,用两个Hibernate Criterias查询完成,所以我们在这里工作.(也许使用纯SQL查询,复杂的查询使用子查询?)

  • 永远不要在Bean的getter上定义业务逻辑

得到它了!

  • 将适当的范围设置为bean并在其上存储只不过是必要的东西

我们有一个完整的ajax站点,所以View Scoped几乎就像Session Scoped一样,我们使用SessionBeans作为一种'Cache'来存储我们不希望每次都从DB获取的关键数据+定义业务逻辑这里.

  • 选择正确的JSF状态保存方法 - 客户端Vs服务器

为此,我需要进行更多的研究,检查各种可能性的优缺点,然后测试每一种的可能性.

到目前为止非常清楚,现在一些额外的提示我对此有些怀疑.

  • 尽可能使用vanilla HTML,最好使用h:标签而不是p:标签

简单的HTML是清楚的,有意义的,现在在h:和p之间:它值多少钱?例如.

<p:commandButton value="Value" 
             styleClass="class" 
             actionListener="#{myBean.doStuff()}"
             ajax="true" process="@form" update="@form" 
             onsuccess="jsFunction()" />
Run Code Online (Sandbox Code Playgroud)

VS

<h:commandButton value="Value" 
             styleClass="class" 
             actionListener="#{myBean.doStuff()}" >
       <f:ajax execute="@form" render="@form" event="onclick" />
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)

要么

<ui:fragment... vs <p:fragment...
Run Code Online (Sandbox Code Playgroud)

要么

<p:outputLabel value="#{myBean.value}" rendered="#{myBean.shouldRender}" />
Run Code Online (Sandbox Code Playgroud)

VS

<ui:fragment rendered="#{myBean.shouldRender}">
    <label>#{myBean.value}</label>
</ui:fragment>
Run Code Online (Sandbox Code Playgroud)

我一直在使用Primefaces和Jsf标签以及一些简单的HTML混合使用了一段时间.(主要是PF由于其组件的功能)我现在普通的HTML总是会更快,但在JSF和另一个框架之间?如果我这样做,改变它将花费大量时间,我不希望知道它的结果根本没有相关的差异.

  • 自定义Facelets标记与复合组件

我认为这是关键.对它们的差异仍有一些疑问,在两者的实现上,CC使用起来非常简单和灵活,但缺点是它们完全包含在ViewTree和JSF为每个请求重新生成(如果我没有记错的话) ,而自定义标签使用起来似乎有点复杂(不是那么多),但其优势在于ViewTree上只包含了实际呈现的内容,仅此而已,使RESTORE VIEW更省时.我们有几个复合组件,没有Facelets标签,所以这里要做很多工作.我还没有找到一篇很好的文章解释它们之间的差异,当一个应该被使用时和另一个(已经读过输入,消息使用TAGS和更复杂的东西CC).如果想要更喜欢标签与CC,那么我将没有选择而不是使用CC?在CC中使用自定义标签是否可以使它们更轻松地用于处理它们?

我即将进入修改孔项目的旅程,以获得更好的性能,这将花费我几天的时间,想法是这次获得更好的结果; 所以每个提示,建议和建议都非常欢迎!谢谢你们的时间!

performance jsf primefaces jsf-2

13
推荐指数
1
解决办法
2万
查看次数

用于静态内容的JSF库 - 或普通的静态文件 - 性能?

我们有两种方式可以提供图片,javascript,css等项目.

  • 一个静态区域,比如"/images/foo.png"
  • 一个JSF库,它呈现诸如"/javax.faces.library/foo.png?ln=images"之类的东西

后者似乎是JSF中的事情.这很容易做到.它有很多支持.

前者在性能重要的情况下允许有趣的技巧.我们可以安排我们的服务器不将/ images传递给servlet引擎,而是使用更快的东西.公平地说,我不知道有没有人使用我们的软件做过这个,或者有多少像Tomcat或JBoss这样的东西服务于Apache等本地的静态内容,以及这与业务逻辑的成本有多大关系这也是为了提供应用程序本身.

我们希望在这两种情况下,图像都能在很长时间内提供,因此浏览器可以缓存它们.我注意到JSF版本有一个查询字符串部分,所以希望浏览器不会决定它知道更好并拒绝缓存.我们必须看一些痕迹,看看发生了什么.

那该怎么办?JSF库?特别是h:outputScript和h:outputStylesheet控件之类的支持?或者网站的图片区域?

谢谢 - 理查德

jsf-2

6
推荐指数
1
解决办法
1001
查看次数

GZIP JSF-Seam Web 应用程序页面的最佳方法是什么

我正在 Tomcat 上开发一个 JSF web 应用程序,计划在不久的将来使用 Seam,我想添加我们的网页和资源(即 Javascript 和 CSS 文件)的压缩。我知道在 Java web 中 GZIP 响应的三种方法:

  1. 使用 Ehcache GZIP 过滤器:它在 Appfuse 中使用,所以它可能是可靠的,它会在应用之前检查用户代理是否支持 GZIP,但它似乎与 Seam 有问题,我们将使用http://seamframework.org/Community /EHCacheGZipFilterIncompatibleWithSeam

  2. 使用 pjl 过滤器。从 stackoverflow 问题:Tomcat Compression does Not Add a Content-Encoding: gzip in the Header,它似乎没有任何内存泄漏,但我不知道它是否有 Seam 问题。

  3. 使用 Tomcat 的内置压缩 - 尽管它可能不提供内容编码(Tomcat 6.0.14 似乎工作正常,但您只能为不应应用用户代理压缩的内容提供黑名单。

有没有人在 JSF-Seam 环境中使用过这些方法?哪个是“最佳”解决方案?

谢谢,格伦

java jsf gzip seam

3
推荐指数
1
解决办法
6590
查看次数

更改ajax导航上的URL

我有一个JSF应用程序,我希望在导航中更改浏览器地址栏中的URL.当我打开Home.xhtml并提交表单时,它会显示下一页AppHome.xhtml,但浏览器地址栏中的URL不会更改.

这是提交按钮:

<p:commandButton value="Connect" update="panel" id="ajax" action="#{user.check}" styleClass="ui-priority-primary"/>
Run Code Online (Sandbox Code Playgroud)

这是导航规则:

<navigation-rule>
    <from-view-id>/Home.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>Success</from-outcome>
        <to-view-id>/AppHome.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-outcome>Failure</from-outcome>
        <to-view-id>/Home.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>
Run Code Online (Sandbox Code Playgroud)

执行此导航时,如何更改浏览器地址栏中的URL?

navigation ajax url jsf jsf-2

1
推荐指数
1
解决办法
4094
查看次数