相关疑难解决方法(0)

commandButton/commandLink/ajax动作/侦听器方法未调用或输入值未设置/更新

有时,使用时<h:commandLink>,<h:commandButton>或者<f:ajax>,在action,actionListenerlistener与标签相关的方法根本不被调用.或者,bean属性不会使用提交的UIInput值进行更新.

有什么可能的原因和解决方案?

jsf action commandlink jsf-2 commandbutton

332
推荐指数
5
解决办法
20万
查看次数

Mojarra和MyFaces之间的区别

我开始使用JSF2.0我使用了一个教程作为参考,但我有以下问题:

本教程只使用2个库:jsf-api.jar,jsf-impl.jar(但也有JSTL)从钻嘴鱼科项目.

我试图下载它们但似乎网站无法访问.所以我使用Apache MyFaces,但运行示例我必须添加8个罐子(commons-*,myfaces-*).
如果我使用MyFaces,为什么还需要更多的罐子?我是否应该更喜欢Mojarra?下载页面确实是JSF Mojarra

谢谢

jsf myfaces jsf-2 mojarra

48
推荐指数
4
解决办法
5万
查看次数

如何通过导航菜单ajax-refresh动态包含内容?(JSF SPA)

我正在学习JSF 2,感谢我在这么短的时间里学到了很多东西.

我的问题是关于如何为我的所有JSF 2页面实现一个公共布局,并且每当我从另一个面板单击一个链接/菜单时,只有页面的内容部分不刷新整个页面.我使用Facelets方法它做了我想做的事情,除了每次我点击一个面板的链接(例如左面板的菜单项)时,整个页面都会刷新.我正在寻找的是一种只刷新页面内容部分的方法.为了说明这一点,我的目标是pagelayout.

在此输入图像描述 没有发布我的代码,因为我不确定Facelets是否可以这样做.除了Facelets之外,还有其他方法更适合我的要求吗?

jsf facelets uiinclude single-page-application ajax-update

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

IE9中的字符DOM异常无效

以前在IE8中工作的JS现在在IE9中失败了.

document.createElement('<iframe id="yui-history-iframe" src="../../images/defaults/transparent-pixel.gif" style="position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;"></iframe>');
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:SCRIPT5022:DOM异常:INVALID_CHARACTER_ERR(5)

上面的代码是不符合标准的.该问题的解决方案是什么?

javascript dom internet-explorer-9 domexception

29
推荐指数
3
解决办法
4万
查看次数

通过ajax渲染其他形式会导致其视图状态丢失,如何将其添加回来?

我有

<h:form>
    <h:commandLink action="#{my_fake_ajax_link}">
        <h:outputText value="Link" />
        <f:ajax render=":mydiv" />
    </h:commandLink>
</h:form>

<h:panelGroup layout="block" id="mydiv">
    <h:form>
        <h:commandLink action="#{mybean.delete(0)}">
            <h:outputText value="Here" />
            <f:ajax render="@form" />
        </h:commandLink>
    </h:form>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

当我点击"my_fake_ajax_link"时,我必须在"删除"链接上单击两次.这只是一个例子.我没有这个真实案例.我在页面上有多个表单,我不能只在一个表单中添加所有表单.

我检查了问题是什么,它是:

  • 当您单击"my_fake_ajax_link"时,mydiv使用ajax 进行刷新.
  • 缺少ajax上刷新表单的ViewState.

如何添加ViewState?如何在不使用一个表单的情况下使其工作?这看起来像是一个JSF错误.我不想自动刷新该div

jQuery("#mydiv").load(document.location.href);
Run Code Online (Sandbox Code Playgroud)

但在最坏的情况下,我会尽可能的.

forms viewstate ajax jsf jsf-2

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

<a4j:commandbutton>仅在第二次单击时调用action

我想在按钮单击时提交数据表,但第一次单击时不会调用该操作.这是我的代码:

<h:panelGrid id="addToThisDepartmentPanel">
    <h:outputText value="#{messageDataBean.message}" rendered="#{messageDataBean.isSuccess eq false}" style="color:red" id="addToThisDepartmentMessage"/>
    <h:form>
        <h:dataTable value="#{systemResultViewUtil.systemUserDetailDataBeansList}" var="departmentdetail" id="addToThisDepartmentDataTable" rendered="#{systemResultViewUtil.systemUserDetailDataBeansList.size() gt 0}">
            <h:column>
               <f:facet name="header">
                   Name
               </f:facet>
               <h:outputText value="#{departmentdetail.name}" style="text-align: left;padding-right: 120px" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    Current Department
                </f:facet>
                <h:outputText value="#{departmentdetail.depName}" style="text-align: left;padding-right: 120px" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    Add To This
                </f:facet>
                <h:selectBooleanCheckbox value="#{departmentdetail.cheked}" style="text-align: left;padding-right: 120px"/>
            </h:column>
         </h:dataTable>

         <a4j:commandButton oncomplete="if(#{messageDataBean.isSuccess eq true}){ closeAddToThisDepartmentDialog()}" value="Add TO This Department" action="#{departmentServiceBean.addEmployeeToThisDepartment}" id="addToThisDepartmentButton"
                                                       render=":addToThisDepartmentMessage :message" execute=":addToThisDepartmentDataTable" />
     </h:form>
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)

问题是,在第二次单击时,我的<a4j:commandButton>操作被调用.但是第一次点击时不会调用它.
有任何想法吗?

jsf richfaces ajax4jsf jsf-2

12
推荐指数
1
解决办法
9890
查看次数

ExternalContext.dispatch()无法正常工作

在p:ajax调用上,侦听器调用包含以下内容的方法

     FacesContext.getCurrentInstance().getExternalContext().dispatch("/uri.jsf");  
Run Code Online (Sandbox Code Playgroud)

不起作用。我已经在行上设置了一个断点,它在执行时保持在同一点。它并没有前进,我必须重新启动服务器以再次运行该应用程序。

    FacesContext.getCurrentInstance().getExternalContext().redirect("/uri.jsf");
Run Code Online (Sandbox Code Playgroud)

重定向工作正常。但是我想要转发的页面向前导航到另一个页面。

primefaces jsf-2

4
推荐指数
1
解决办法
5220
查看次数

Primefaces咆哮不适用于所有页面

我的网站有一个共同的模板,即xhtml file同时包含growl

<p:growl id="message" showDetail="true" life="3000" />
Run Code Online (Sandbox Code Playgroud)

该模板将在所有页面中进一步使用。我注意到这growl适用于页面,index.xhtml但不适用于其余页面。以下是faces-config.xml文件的摘要-

<navigation-rule>
    <display-name>index.xhtml</display-name>
    <from-view-id>/index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>NORMAL_USER</from-outcome>
        <to-view-id>/home.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>
Run Code Online (Sandbox Code Playgroud)

但是,每当我home.xhtml通过link 访问页面时http://localhost:8080/portal/home.xhtml,便 growl开始工作。在我update=":message"用来更新的所有页面中growl。罪魁祸首是哪个?

下边是 index.xhtml

<ui:composition template="/template/common/base.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

    <ui:define name="center">

        <h:form>
            <div align="center" style="margin-top: 10%; margin-bottom: 10%;">
                <p:panelGrid columns="2">
                    <f:facet name="header">  
                     #{msg.HEADER}
                    </f:facet>

                    <h:outputLabel for="username" value="#{msg.USERNAME}" />
                    <p:inputText id="username" value="#{client.user.username}"
                        required="true" requiredMessage="#{msg.USERNAME_REQUIRED_MSG}" />

                    <h:outputLabel for="password" value="#{msg.PASSWORD} " />
                    <p:password id="password" value="#{client.user.password}"
                        required="true" …
Run Code Online (Sandbox Code Playgroud)

jsf primefaces

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

h:commandLink的oncomplete属性未被调用

我们正在从JSF 1.2迁移到JSF 2.2.6以及RichFaces 4.5.2.面对oncomplete未被调用的问题.在onclick调用JS函数时,JS函数oncomplete不会被调用.这是怎么造成的,我该如何解决?

<h:commandLink ... onclick="ed();" oncomplete="cEd(#{rowIndex});">
Run Code Online (Sandbox Code Playgroud)

jsf commandlink jsf-2

4
推荐指数
1
解决办法
9284
查看次数

JSF 操作从未​​在 h:commandButton 上触发(使用 f:ajax)

我阅读了很多关于 f:ajax 与其他 jsf 或 html 标签一起工作的内容,但这似乎还不够!

我的页面中有一个带有(必需的?)f:ajax 标记的 commandButton,并且该操作永远不会被触发。这是代码。

<html>
  <h:head>
  </h:head>

  <h:body>
    <h:form>
      <h:commandButton action="#{bean.myFirstFunction}" value="Submit">
        <f:ajax render=":wrap" />
      </h:commandButton>
    </h:form>

    <h:panelGroup id="wrap">
      <h:panelGroup id="content" rendered="#{bean.myVariable != null}">

       <h:form>
         <h:commandButton action="#{bean.mySecondFunction}" value="Submit">
           <f:ajax render=":wrap" />
         </h:commandButton>
       </h:form>

      </h:panelGroup>
    </panelGroup>
  <h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

所以像上面一样,我有两个按钮,第一个从包装中工作,它必须显示隐藏在开头的包装面板。第二个是在包装中,必须启动一个完全不同的动作。(包装必须保持显示)

这是豆子。

@ManagedBean(name = "bean")
@ViewScoped
public class myBean {
  private Object myVariable;

  public void setMyVariable(Object o) { ... }
  public Object getMyVariable() { ... }

  @PostConstruct
  public void init() {
    this.myVariable = null;
  }

  public void …
Run Code Online (Sandbox Code Playgroud)

jsf render commandbutton

3
推荐指数
1
解决办法
8173
查看次数