在我的Web应用程序中,我使用Hibernate检索数据并将其显示在RichFaces dataTable中.
在我的MySQL表中有一个类型为"date"的字段.当我将此字段打印到我的Bean中的日志时,它会显示数据库中的正确日期(例如2010-04-21).但在富人:dataTable中,它显示如下:
一零年四月二十零日
所以有一天的差异!
我添加了"f:convertDateTime"转换器并将"type"属性设置为"both"以便显示时间.现在它显示:
4/20/10 10:00:00 PM
我用过的"f:convertDateTime"代码:
<f:convertDateTime locale="locale.US" type="both" dateStyle="short"/>
Run Code Online (Sandbox Code Playgroud)
所以看起来像f:convertDateTime梦想有一段时间,因为MySQL-table字段中没有时间信息!
我究竟做错了什么?要显示正确的日期,我需要做什么?
谢谢汤姆
我开始使用JSF2.0我使用了一个教程作为参考,但我有以下问题:
本教程只使用2个库:jsf-api.jar
,jsf-impl.jar
(但也有JSTL)从钻嘴鱼科项目.
我试图下载它们但似乎网站无法访问.所以我使用Apache MyFaces,但运行示例我必须添加8个罐子(commons-*
,myfaces-*
).
如果我使用MyFaces,为什么还需要更多的罐子?我是否应该更喜欢Mojarra?下载页面确实是JSF Mojarra?
谢谢
请考虑以下情形.在会话超时(过期)后,我点击了JSF表单的提交按钮.浏览器显示一些异常消息:
ViewExpiredException:无法恢复视图上下文
我想要做的是,在会话过期后自动重定向到网站的主页.这样做的机制是什么?任何帮助将非常感激.
添加后,我在一个非常简单的JSF 2页面中面临以下异常<h:form>
:
java.lang.IllegalStateException: Cannot create a session after the response has been committed
at org.apache.catalina.connector.Request.doGetSession(Request.java:2758)
at org.apache.catalina.connector.Request.getSession(Request.java:2268)
Run Code Online (Sandbox Code Playgroud)
我在Tomcat 7.0.22和JDK 7上使用Mojarra 2.1.3和PrimeFaces3.0M4.
该页面是一个非常基本的数据表:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:form>
<p:dataTable var="car" value="#{tableBean.cars}">
......
</p:dataTable>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
页面在浏览器上正确显示,但在控制台上我看到了异常.如果我删除了,Exception确实会消失<h:form>
.
这是怎么造成的,我该如何解决?
即使用户知道某些页面的URL,我也想阻止访问某些页面.例如,/localhost:8080/user/home.xhtml
(需要先登录)如果没有记录则重定向到/index.xhtml
.
在JSF中如何做到这一点?我在Google上读到需要过滤器,但我不知道该怎么做.
我有一个hibernate和JSF2应用程序进入部署服务器并突然在异常中抛出org.hibernate.AssertionFailure:null id.我将立即提供堆栈跟踪和代码,但这里首先是四个重要问题:
这只发生在部署服务器上(在Windows Sever 2008上运行的Jboss和MySql).它不会发生在我的开发机器上(在Windoes 7 Pro上运行的Tomcat和MySql),也不会发生在暂存环境中(在Linux上运行的Jboss和MySql) .)
研究这个,似乎人们在尝试插入对象时会出现此错误.但是当我做一个简单的查询时,我得到了错误.(实际上,各种不同的查询随机地在几个页面上弹出错误.)
错误只会偶尔出现.如果我做Jboss重启它会消失,但一段时间后会返回.此外,它不一致,有些点击它在那里,而其他人则没有.即使它命中,当我对页面进行简单的刷新时它也会返回.
我正在使用c3p0(下面的配置)
知道发生了什么事吗?
代码详情:
这发生在地址对象上.这是完整的hbm:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.idex.auctions.model">
<class name="Address" table="address" lazy="true">
<id name="addressID" column="AddressID">
<generator class="native"/>
</id>
<property name="street" column="street"/>
<property name="city" column="city"/>
<property name="zip" column="zip"/>
<property name="state" column="state"/>
<property name="region" column="region"/>
<property name="country" column="country"/>
<many-to-one name="user"
class="com.idex.auctions.model.User"
column="userid"
unique="true"
cascade="save-update"/>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
Java类是直截了当的:
public class Address implements Serializable {
private static final long serialVersionUID = 7485582614444496906L;
private long addressID;
private …
Run Code Online (Sandbox Code Playgroud) 我不确定使用<f:view>
和有什么好处<f:subview>
.我注意到可以在不使用它们的情况下编写JSF页面.
使用这些标签有什么好处?
我想UIComponent
通过我提供的id从托管bean中找到一些.
我写了以下代码:
private UIComponent getUIComponent(String id) {
return FacesContext.getCurrentInstance().getViewRoot().findComponent(id) ;
}
Run Code Online (Sandbox Code Playgroud)
我已经定义了一个p:inputTextarea
:
<p:inputTextarea id="activityDescription" value="#{adminController.activityDTO.activityDescription}" required="true" maxlength="120"
autoResize="true" counter="counter" counterTemplate="{0} characters remaining." cols="80" rows="2" />
Run Code Online (Sandbox Code Playgroud)
现在,如果在getUIComponent("activityDescription")
返回方法时调用该方法null
,但如果我将其调用,getUIComponent("adminTabView:activityForm:activityDescription")
那么我可以获取该org.primefaces.component.inputtextarea.InputTextarea
实例.
有没有办法让组件只有id,即"activityDescription"不是绝对id,即"adminTabView:activityForm:activityDescription"?
我正在尝试ajax更新有条件渲染的组件.
<h:form>
...
<h:commandButton value="Login" action="#{login.submit}">
<f:ajax execute="@form" render=":text" />
</h:commandButton>
</h:form>
<h:outputText id="text" value="You're logged in!" rendered="#{not empty user}" />
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.我可以保证这#{user}
实际上是可用的.这是怎么造成的,我该如何解决?
jsf rendered-attribute jsf-2 conditional-rendering ajax-update
我搜索过互联网,但找不到<p:ajax>
活动清单.任何人都可以提供<p:ajax>
标签的完整事件列表吗?
如果有onblur
事件或类似事件我特别感兴趣.