我是jsf的新手,想知道JSF,Rich-/Prime-/IceFaces之间的明显区别.
在JSF中,我们使用.jsp扩展名创建页面,并在后台bean中编写java代码.
但究竟所有"面孔"与jsf有何不同.
我有类似的东西:
<p:inputText...>
<p:ajax event="keyup" update="somefield" listener="#{someBean.doSomething}"/>
</p:inputText>
Run Code Online (Sandbox Code Playgroud)
但我不想在每个按键上都做一个Ajax请求,我想在用户停止写入后半秒钟做请求.
我在另一个问题中看到jQuery解决了这个问题: 如何延迟.keyup()处理程序,直到用户停止输入?
我想知道是否可以在primefaces上执行此操作或如何从jQuery问题调整解决方案.
我正在使用PrimeFaces 3.0.M4.
先感谢您.
我希望在用户登录系统后控制访问权限.
例如:
administrator : can add, delete and give rights to employee
employee : fill forms only
...
Run Code Online (Sandbox Code Playgroud)
因此,在知道用户具有哪些权限后,检查数据库,我想限制该用户可以看到和执行的操作.有一个简单的方法吗?
编辑
@WebFilter("/integra/user/*")
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
Authorization authorization = (Authorization) req.getSession().getAttribute("authorization");
if (authorization != null && authorization.isLoggedIn()) {
// User is logged in, so just continue request.
chain.doFilter(request, response);
} else {
// User is not logged in, so redirect to …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个链接,在不同的窗口/选项卡中打开一个新页面,并显示一些来自支持bean的消息但是没有这样做,想知道为什么?
这是我的xhtml文件:
<html: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:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:body>
<h:form id="form66">
<p:commandLink actionListener="#{testing.getMessage}" action="msg.xhtml" target="_blank">get Msg</p:commandLink>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我的Msg.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:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>testing</title>
</h:head>
<h:body>
<div class="div">
<p:panel>
<f:facet name="header">
testing
</f:facet>
<div class="paddingForPanel">
<h:outputText value="#{testing.msg}" escape="false"/>
</div>
</p:panel>
</div>
</h:body>
</HTML>
Run Code Online (Sandbox Code Playgroud)
这是我的testing.java
public void getMessage() {
this.msg = "haha";
}
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码无法打开一个新的选项卡/窗口,我尝试像下面这样做,它成功在新选项卡中打开新页面但msg为空,当我调试时,它成功调用了监听器getMessage,我想知道为什么msg.xhtml页面中的msg为空?提前致谢....
<p:commandLink actionListener="#{testing.getMessage}" oncomplete="window.open('msg.xhtml')">broadcast …Run Code Online (Sandbox Code Playgroud) 我试图在我的JSF应用程序中使用Font Awesome图标.我按照入门说明并将以下内容添加到我的视图部分,取得了一些成功<h:head>:
<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css"
rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
当我使用这个icon-home类时,这给了我一个很好的主页图标:

但是,我不想依赖引导服务器来提供Font Awesome资源,所以我试图将这些与我的战争捆绑在一起,并配置我的视图以使用捆绑的资源.
我正在使用webjars项目创建的预制JAR.我的pom具有以下依赖性:
<dependency>
<groupId>org.webjars</groupId>
<artifactId>font-awesome</artifactId>
<version>3.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这将JAR放在我的WAR的WEB-INF/lib目录中.JAR结构的相关部分是:
META-INF
- MANIFEST.MF
+ maven
- resources
- webjars
- font-awesome
- 3.2.1
- css
- font-awesome.css
- *other css files*
- font
- *font files*
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法在我的项目中包含图标:
<h:outputStylesheet library="webjars"
name="font-awesome/3.2.1/css/font-awesome.css" />
Run Code Online (Sandbox Code Playgroud)
但是,这会将以前工作的主页图标呈现为:

我的浏览器(Chrome)在控制台中显示以下错误(域/端口/上下文根已更改以保护无辜;):
GET http://DOMAIN:PORT/CONTEXT-ROOT/javax.faces.resource/font-awesome/3.2.1/font/fontawesome-webfont.woff?v=3.2.1 404 (Not Found)
GET http://DOMAIN:PORT/CONTEXT-ROOT/javax.faces.resource/font-awesome/3.2.1/font/fontawesome-webfont.ttf?v=3.2.1 404 (Not Found)
GET http://DOMAIN:PORT/CONTEXT-ROOT/javax.faces.resource/font-awesome/3.2.1/font/fontawesome-webfont.svg 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
所以看起来虽然正确解析了css文件,但是找不到包含css文件引用的字体的文件.我已在css文件中检查了这些引用,它们是:
src: url('../font/fontawesome-webfont.eot?v=3.2.1');
src: …Run Code Online (Sandbox Code Playgroud) 即使我将属性设置为@Column(unique=true),我仍然插入重复的条目.
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(unique=true )
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
我设置了name使用定期EL在JSF.我没有create使用表JPA
是否正确,我永远不需要使用EntityManager#merge(),只要我只处理附加的管理实体?换句话说,调用merge()上的连接管理实体有没有影响?
或者是否存在合并有用的情况?我发现这个名字暗示我可以用它来处理OptimisticLockException... :)
编辑:简单来说,我对托管实体的理解是,在交易结束时,其属性/字段的修改会持久保存到数据库中.
我在操作EL/JSP中的数据时遇到了一些问题.
我有两个变量Action(我使用Struts2 btw)它们是:
private List<Appointment> appointment;
private Map<Integer, String> doctors;
Run Code Online (Sandbox Code Playgroud)
约会具有属性docID,医生列表使用此属性来识别医生全名; 我希望在我的JSP中获得医生的全名.也就是说,我想要这个:
${doctors[${appointment.docID}]}
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用.关于如何使这个工作的任何想法?
我在我的项目中使用了FullQuery的jQuery插件.在fullCalendar周视图中,我可以看到以下列格式显示日期的行: -
Sunday 9/6,Monday 9/7,Tuesday 9/8等...
其实,我想扭转的位置month/day来day/month.
我该如何初始化设置?谢谢!
我在primefaces中有一个数据表,我想,当我在其中添加一行时,查看数据表的最后一页.
我的.xhtml页面是:
<h:form id=...>
...
<p:dataTable var="webTemplate" id="templateTable" widgetVar="tbl1"/>
...
</h:form>
<h:form id=...>
...
<p:inputText id="txt_description" value="#{templateController.templateDescription}" label="templateDescription">
<f:validateLength for="txt_name" minimum="1"/>
<p:ajax event="change"
listener="#{calculatePageTable.setPageTableTemplate}" onsuccess="setTabIndexTT()"/>
</p:inputText>
...
</h:form>
<script type="text/javascript">
function setTabIndexTT(){
tbl1.getPaginator().setPage(#{calculatePageTable.pageTableTemplate});
}
</script>
Run Code Online (Sandbox Code Playgroud)
豆:
@ManagedBean
@SessionScoped
public class CalculatePageTable {
private int pageTableTemplate = 0;
private int pageTableField = 0;
public void setPageTableTemplate() {
final DataTable d = (DataTable) FacesContext.getCurrentInstance().getViewRoot()
.findComponent("form:templateTable");
pageTableTemplate = d.getPageCount() - 1;
}
public int getPageTableTemplate() {
return pageTableTemplate;
}
public void setPageTemplateField() { …Run Code Online (Sandbox Code Playgroud) jsf ×4
jsf-2 ×4
primefaces ×4
jpa ×2
commandlink ×1
css ×1
el ×1
font-awesome ×1
fullcalendar ×1
java ×1
java-ee ×1
javascript ×1
jquery ×1
jsp ×1
maven ×1
mysql ×1
orm ×1
richfaces ×1
webjars ×1