当我在登录页面时,我得到一个ViewExpiredException,它不应该是.所以我在过滤器上读了一篇文章(由BalusC推荐).可能是页面是从浏览器的缓存加载而不是从服务器加载.所以我已经实现了这段代码
@WebFilter(servletNames={"Faces Servlet"})
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpServletResponse httpRes = (HttpServletResponse) response;
if (!httpReq.getRequestURI().startsWith(httpReq.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
httpRes.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpRes.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpRes.setDateHeader("Expires", 0); // Proxies.
}
chain.doFilter(request, response);
}
// ...
@Override
public void init(FilterConfig filterConfig) throws ServletException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Java企业应用程序,我使用JSF,主要是Primefaces.我需要把facebook放在按钮上.你知道是否有像jsf组件的facebook吗?或者是其他东西?
我有这张桌子:
<p:dataTable value="#{requestBean.requestsList}" var="requestClass" style="width:50px;" id="requestList">
<p:column>
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{requestClass.requestID}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Status" />
</f:facet>
<h:outputText value="#{requestClass.requestStatus}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Details" />
</f:facet>
<h:outputText value="#{requestClass.requestTitle}" />
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
现在行正确显示数据,但我希望能够单击记录ID.当我这样做时,我会转到另一个页面,例如review.xhtmlurl参数将是该ID.所以这样的事情:review.xhtml?id="clicked request".怎么做的?
更新:我试过这个并且它确实有点工作,但它在实践中是否正确?
<p:column>
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<a href="review.xhtml?id=#{requestClass.requestID}">
<h:outputText value="#{requestClass.requestID}" />
</a>
</p:column>
Run Code Online (Sandbox Code Playgroud) 我不能似乎能当我内触发事件column的dataTable.这是我简单的演示
<h:form id="form">
<!--This section of p:tree here seems to be the reason causing the event not fired when click the command button-->
<p:tree value="#{viewBean.root}" var="node" dynamic="true" cache="false"
selectionMode="checkbox" selection="#{treeBean.selectedNode}">
<p:ajax event="expand" update=":form:messages" listener="#{viewBean.onNodeExpand}" />
<p:ajax event="collapse" update=":form:messages" listener="#{viewBean.onNodeCollapse}" />
<p:ajax event="select" update=":form:messages" listener="#{viewBean.onNodeSelect}" />
<p:ajax event="unselect" update=":form:messages" listener="#{viewBean.onNodeUnselect}" />
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
<h:panelGroup id="mygroup">
<p:dataTable id="mytable" value="#{viewBean.foodList}" var="item">
<p:column>
#{item}
</p:column>
<p:column>
<p:commandButton value="delete"
action="#{viewBean.delete}"
update=":form:mygroup">
<f:setPropertyActionListener target="#{viewBean.selectedFood}"
value="#{item}"/>
</p:commandButton>
</p:column>
</p:dataTable> …Run Code Online (Sandbox Code Playgroud) 我写了一篇PhaseListener我正在检查验证阶段的文章.有没有一种方法可以用来检查afterPhase()监听器验证失败的方法,验证阶段之后的下一阶段将是渲染响应阶段.
我有这个托管bean:
package com.DX_57.SR_57;
/** include default packages for Beans */
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
// or import javax.faces.bean.SessionScoped;
import javax.inject.Named;
/** include package for SHA-256 encryption */
import java.security.NoSuchAlgorithmException;
/** include SQL Packages */
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.annotation.Resource;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
// or import javax.faces.bean.ManagedBean;
import org.DX_57.osgi.CL_27.api.CryptoSHA;
import org.glassfish.osgicdi.OSGiService;
import org.DX_57.osgi.SH_27.api.SessionHandle;
@Named("loginController")
@SessionScoped
public class userCheck implements Serializable {
private String user = null;
private String password …Run Code Online (Sandbox Code Playgroud) 有没有办法设置Firefox和Chrome在h:outputText标记中使用escape = false属性.当某些html需要在浏览器中显示时,Firefox和Chrome会正确显示已解析的字符串,但应用程序中的任何其他链接都会被冻结(??).
来自db的示例html:
<HEAD>
<BASE href="http://"><META content="text/html; charset=utf-8" http-equiv=Content-Type>
<LINK rel=stylesheet type=text/css href=""><META name=GENERATOR content="MSHTML 9.00.8112.16434">
</HEAD>
<BODY><FONT color=#000000 size=2 face="Segoe UI">läuft nicht</FONT></BODY>
Run Code Online (Sandbox Code Playgroud)
在页面上解析HTML:
läuftnicht
非常奇怪的是,在IE中一切正常(通常是相反的).
我使用primefaces组件(v2.2),. xhtml,tomcat 7和JSF 2.0
我有一个来自我的实体的形式(weatherstation).我还有一个名为"bezeichnung"的字段(描述).当我输入一个字符串并按下搜索按钮(用于搜索)时,我总是得到一个异常:
引起:java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围:0
在我的数据库中是bezeichnung"Traunstein"的一个对象
实体(带有getter和setter):
@Entity
@NamedQuery(name="findbybez", query="select w from Weterstation w where w.bezeichnung like :bez")
public class Weterstation implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable=false, unique=true)
@Length(min=3, max=20, message="Min.->3 Max->20")
private String bezeichnung;
@Column(nullable=false)
@Pattern(regexp="[0-9][0-9][0-9][0-9]" , message="PLZ ist falsch")
private String plz;
@Column(nullable=false)
@Length(min=3, max=20, message="Min.->3 Max->20")
@Pattern(regexp="^[A-Z][a-z]*", message="Der Ort muss einen Anfangsbuchstaben machen")
private String ort;
@Column(nullable=false)
@TempValid(message="Min -40°C, Max 40°C")
private double temp;
public Long getId() { …Run Code Online (Sandbox Code Playgroud) 我遇到了一个问题,即操作完成后我的页面没有刷新.
我在页面上有这个表格:
<h:form id="fundingResults">
<p:ajaxStatus style="width:16px;height:16px;">
<f:facet name="start">
<p:graphicImage value="/images/loading4.gif" />
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
<p:dataTable>
// some form elements in the table
</p:dataTable>
<p:commandButton id="btnEdit" value="Submit" type="submit" action="#{fundingBacker.classifyProducts}" style="float: right;margin-top:15px;" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
我的classifyProducts方法框架是这样的:
public void classifyProducts() {
// a bunch of stuff goes on in here
}
Run Code Online (Sandbox Code Playgroud)
由于隐式导航,classifyProducts()方法完成后页面是否应该自动刷新?
在我的JSF文件中,我在开始时就在下面.
<h:form><h:commandLink value="Create New Staff Account" action="adminCreateStaffMember"/></h:form>.
通过使用这个,当我创建时,Create New Staff Account我被重新定向到我有表格的页面来创建新帐户.
但是,当我使用相同的内部时dataTable,不采取行动.我还在同一页上:(
<h:dataTable var="c" value="#{newStaffMemberServiceBean.newStaffMemberDataBeanList}"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row"
border="1" id="staffListDataTable" width="100%">
<h:column>
<f:facet name="header">
Staff Member Name
</f:facet>
<h:form><h:commandLink value="Create New Staff Account" action="adminCreateStaffMember"/></h:form>
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
实际上我想要打印的是我将使用的相应工作人员的详细信息f:setPropertyActionListener.但由于上述情况不起作用,我不会继续.
请建议我哪里出错了.
我newStaffMemberServiceBean在RequestScoped
@ManagedBean(name = "newStaffMemberServiceBean")
@RequestScoped
public class NewStaffMemberServiceBean {
// some code
}
Run Code Online (Sandbox Code Playgroud)
HTML Generated如下
在外面 dataTable
<div align="right">
<form id="j_idt35" name="j_idt35" method="post" action="/adminManageStaffMember" enctype="application/x-www-form-urlencoded">
<input …Run Code Online (Sandbox Code Playgroud) jsf ×10
java ×7
primefaces ×4
jsf-2 ×3
commandlink ×1
datatables ×1
html ×1
jpa ×1
mojarra ×1
myfaces ×1
validation ×1