我是JSF的新手,我的简单JSF应用程序有问题.我在WebLogic 10.3.2(11g)上使用Facelets和Richfaces.该申请基本上是3页:
A < - > B < - > C.
其中中间箭头表示导航规则.导航是通过a4j执行的:commandButtons问题出在Firefox 3.5中,当我从B到C点击时,我从wyciwig://获取一个url .更详细地说,起始URL是:
HTTP://本地主机:7001/MyApp的/ index.faces
当我从B导航到C时,我得到的网址是:
wyciwyg:// 20/http:// localhost:7001/myapp/index.faces
从Google搜索中我看到wyciwig是WhatYouCacheIsWhatYouGet,因此问题可能与缓存有关.在那个方向上,我做了两件事:
答:我添加了以下元标记:
<meta http-equiv="Pragma" content="No-cache"/>
<meta http-equiv="Cache-Control" content="no-store,No-cache,must-revalidate,post-check=0,pre-check=0,max-age=0"/>
<meta http-equiv="Expires" content="-1"/>
Run Code Online (Sandbox Code Playgroud)
B.我添加了一个PhaseListener来添加HTML标头标签,如此处所示.
不幸的是,问题仍然存在.
另一件可能相关的事情是,由于某种原因,我的导航不会更改浏览器地址栏中显示的网址.当我将鼠标悬停在a4j:commandButtons上时,状态栏中显示的链接始终是
HTTP://本地主机:7001/MyApp的/ index.faces#
所以问题如下:
干杯!
更新1:这些家伙在这里(葡萄牙文)说,更换所有A4J:commandLink与A4J:htmlCommandLink解决了这个问题.我做了,他们是对的.通过,我不明白原因.
我正在尝试使用Facelets创建自定义标记,但它不呈现(即标记在响应中显示为未替换).
标签(/WEB-INF/facelets/tags/inputThumbnailSelector.xhtml):
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:t="http://myfaces.apache.org/tomahawk">
<ui:composition>
<div style="position: relative;">
<img style="position: absolute; left: 0; top: 0;" src="#{image}"/>
<div class="thumbnail-selector" style="position: absolute; left: #{backingBean.thumbnailLeft}; top: #{backingBean.thumbnailTop};"/>
</div>
</ui:composition>
</html>
Run Code Online (Sandbox Code Playgroud)
/WEB-INF/facelets/tags/panayk.taglib.xml:
<!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib>
<namespace>http://panayk.endofinternet.org/jsf</namespace>
<tag>
<tag-name>inputThumbnailSelector</tag-name>
<source>inputThumbnailSelector.xhtml</source>
</tag>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)
我的web.xml包含:
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/facelets/tags/panayk.taglib.xml</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
这是标记的调用方式:
<!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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:my="http://panayk.endofinternet.org/jsf">
<ui:composition template="/layout/layout.xhtml">
...
<my:inputThumbnailSelector image="${facesContext.externalContext.requestContextPath}/image/get.servlet?id=1"
backingBean="#{entryHandler}"/>
...
</ui:composition>
</html>
Run Code Online (Sandbox Code Playgroud)
提前谢谢了!
我需要在同一个bean上设置2个不同的ManagedProperty.所以我试过:
@ManagedBean(name="selector")
@RequestScoped
public class Selector {
@ManagedProperty(value="#{param.page}")
@ManagedProperty(value="#{param.profile_page}")
private String page;
private String profile_page;
public String getProfile_page() {
if(profile_page==null || profile_page.trim().isEmpty()) {
this.profile_page="main";
}
return profile_page;
}
public void setProfile_page(String profile_page) { this.profile_page = profile_page; }
public String getPage() {
if(page==null || page.trim().isEmpty()) {
this.page="homepage";
}
return page;
}
public void setPage(String page) { this.page=page; }
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我不能写出2个不同的@ManagedProperty:它说重复的注释.我该如何解决?
另一个:当我返回这个值时,它是一个字符串,我需要对抗.这个语法:
<h:panelGroup rendered="#{selector.profile_page.compareTo("main")}">
<ui:include src="/profile/profile_main.xhtml" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
将工作?
干杯
在Eclipse(Helios)中打开JSF页面(JSF + Apache Trinidad + facelet)时,Eclipse会在页面打开前冻结几秒钟.
此外,在编辑页面时,代码完成/语法验证很慢 - 例如我输入<tr:并且我必须等待几秒钟才能继续输入或显示tr标签.
每次输入开始标签时我都要等待并且让我慢慢减速,这是非常烦人的.
我也在使用自定义facelet标签.
怎么做才能避免Eclipse冻结/放慢速度?我是否必须更改任何配置才能加快速度?
如果我在.xhtml文件中进行更改,则更改不会反映在浏览器的屏幕上.为了使它工作,我必须每次都重新启动服务器.这对我来说似乎很笨拙.
我在我的添加了以下上下文参数web.xml:
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
<param-value>1</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
但是,它们没有任何效果.
我的技术堆栈如下:
我想<ui:include>动态地多次包含一个页面.
码:
<h:dataTable ..>
<h:column>
<ui:include src="#{create_page}">
<h:column>
<h:dataTable>
Run Code Online (Sandbox Code Playgroud)
现在,当我提交它时,它只持续最后一个.它只记住最后一个包含页面的值.我想在每个create_page中使用唯一的实体对象.我怎样才能做到这一点?
我有以下页面:
<?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">
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:o="http://omnifaces.org/ui"
xmlns:thehub="http://java.sun.com/jsf/composite/components/thehub"
template="/templates/masterTemplate.xhtml">
<f:metadata>
<f:viewParam
id="returnToViewParam"
name="returnTo"
value="#{loginMB.returnTo}"
required="true" />
<f:viewParam
id="oauth_verifierViewParam"
name="oauth_verifier"
value="#{loginMB.oauth_verifier}" />
<f:viewParam
id="oauth_tokenViewParam"
name="oauth_token"
value="#{loginMB.oauth_token}" />
<f:event
type="preRenderView"
listener="#{loginMB.preRenderView()}" />
</f:metadata>
<ui:define name="body">
<o:form
id="loginForm"
includeViewParams="true">
<div class="form-vertical well">
<h4>New Users</h4>
<h5>
<h:link outcome="signup">Click here to create an account</h:link>
</h5>
<hr />
<h4>Existing Users</h4>
<h:commandButton
id="googleLoginCommandLink"
styleClass="btn"
action="#{loginMB.redirect()}"
value="Google">
<f:param
name="returnTo"
value="#{param.returnTo}" />
</h:commandButton>
<div class="clearfix"></div>
</div>
</o:form>
</ui:define> …Run Code Online (Sandbox Code Playgroud) 我有这个:
<html
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
>
<h:selectOneRadio>
<f:selectItem value="1" itemValue="1" itemLabel="123"/>
<f:selectItem value="2" itemValue="2" itemLabel="321"/>
</h:selectOneRadio>
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
<f:selectItem value="1" itemValue="1" itemLabel="123"></f:selectItem>
<f:selectItem value="2" itemValue="2" itemLabel="321"></f:selectItem>
<select name="j_idt5" size="1"></select>
Run Code Online (Sandbox Code Playgroud)
为什么xmlns:f="http://xmlns.jcp.org/jsf/core"标签没有呈现?
我在Netbeans 7.3上使用JBoss AS 7.
我正在使用Javascript为网站开发FB登录应用程序.我尝试在HTML中工作正常.当我转换为JSF时,它会出错.
这是我的fbLogin.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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:fb="http://www.facebook.com/2008/fbml">
<h:head>
<title>FB Login</title>
<link rel="stylesheet" type="text/css" href="./xmlhttp/css/rime/rime.css"/>
</h:head>
<h:body styleClass="ice-skin-rime">
<fb:login-button scope="email"></fb:login-button>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<APP_ID>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional initialization code here
showMe = function(response) {
if …Run Code Online (Sandbox Code Playgroud) 我在里面view.xthml,里面有facelets组件.喜欢:
<ui:composition template="/layout.xhtml"> .. whatever
Run Code Online (Sandbox Code Playgroud)
在那里我尝试整合AngualerJS,推杆ng-view,像这样:
<div ng-view> </div>
Run Code Online (Sandbox Code Playgroud)
当我/view.jsf渲染时出现服务器端错误:
Attribute name "ng-view" associated with an element type "div" must be followed by the ' = ' character.
Run Code Online (Sandbox Code Playgroud)
因此,它验证了我的html阻止角度ng-view开始工作.
现在的问题是:如何整合angularjs及其ng-view与jsf/facelets基于我的情况?