标签: jsf

禁用浏览器缓存JSF

当我在登录页面时,我得到一个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)

jsf browser-cache servlet-filters

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

Facebook喜欢Java JSF的按钮?

我正在开发一个Java企业应用程序,我使用JSF,主要是Primefaces.我需要把facebook放在按钮上.你知道是否有像jsf组件的facebook吗?或者是其他东西?

java jsf facebook-like

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

JSF Datatable链接到另一个页面

我有这张桌子:

<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)

java jsf primefaces

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

这是Primefaces错误还是Mojarra/MyFaces错误

我不能似乎能当我内触发事件columndataTable.这是我简单的演示

<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)

jsf myfaces primefaces mojarra

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

如果验证失败,如何在验证阶段后检入?

我写了一篇PhaseListener我正在检查验证阶段的文章.有没有一种方法可以用来检查afterPhase()监听器验证失败的方法,验证阶段之后的下一阶段将是渲染响应阶段.

java validation jsf

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

无法从托管bean获取会话ID

我有这个托管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)

java jsf jsf-2

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

在<h:outputText escape ="false">中显示来自DB的HTML会导致HTML页面损坏

有没有办法设置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

html jsf primefaces jsf-2

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

引起:java.lang.ArrayIndexOutOfBoundsException:数组索引超出范围: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)

java jsf jpa

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

操作完成后,JSF 2页面不会刷新

我遇到了一个问题,即操作完成后我的页面没有刷新.

我在页面上有这个表格:

<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()方法完成后页面是否应该自动刷新?

java jsf primefaces

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

h:commandLink无法在dataTable中工作

在我的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.但由于上述情况不起作用,我不会继续.

请建议我哪里出错了.

更新1

newStaffMemberServiceBeanRequestScoped

@ManagedBean(name = "newStaffMemberServiceBean")
@RequestScoped
public class NewStaffMemberServiceBean {
    // some code
}
Run Code Online (Sandbox Code Playgroud)

更新2

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)

java jsf datatables commandlink jsf-2

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