有时,使用时<h:commandLink>,<h:commandButton>或者<f:ajax>,在action,actionListener或listener与标签相关的方法根本不被调用.或者,bean属性不会使用提交的UIInput值进行更新.
有什么可能的原因和解决方案?
我开始使用JSF2.0我使用了一个教程作为参考,但我有以下问题:
本教程只使用2个库:jsf-api.jar,jsf-impl.jar(但也有JSTL)从钻嘴鱼科项目.
我试图下载它们但似乎网站无法访问.所以我使用Apache MyFaces,但运行示例我必须添加8个罐子(commons-*,myfaces-*).
如果我使用MyFaces,为什么还需要更多的罐子?我是否应该更喜欢Mojarra?下载页面确实是JSF Mojarra?
谢谢
我正在学习JSF 2,感谢我在这么短的时间里学到了很多东西.
我的问题是关于如何为我的所有JSF 2页面实现一个公共布局,并且每当我从另一个面板单击一个链接/菜单时,只有页面的内容部分不刷新整个页面.我使用Facelets方法它做了我想做的事情,除了每次我点击一个面板的链接(例如左面板的菜单项)时,整个页面都会刷新.我正在寻找的是一种只刷新页面内容部分的方法.为了说明这一点,我的目标是pagelayout.
没有发布我的代码,因为我不确定Facelets是否可以这样做.除了Facelets之外,还有其他方法更适合我的要求吗?
以前在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)
上面的代码是不符合标准的.该问题的解决方案是什么?
我有
<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"时,我必须在"删除"链接上单击两次.这只是一个例子.我没有这个真实案例.我在页面上有多个表单,我不能只在一个表单中添加所有表单.
我检查了问题是什么,它是:
mydiv使用ajax 进行刷新.如何添加ViewState?如何在不使用一个表单的情况下使其工作?这看起来像是一个JSF错误.我不想自动刷新该div
jQuery("#mydiv").load(document.location.href);
Run Code Online (Sandbox Code Playgroud)
但在最坏的情况下,我会尽可能的.
我想在按钮单击时提交数据表,但第一次单击时不会调用该操作.这是我的代码:
<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>操作被调用.但是第一次点击时不会调用它.
有任何想法吗?
在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)
重定向工作正常。但是我想要转发的页面向前导航到另一个页面。
我的网站有一个共同的模板,即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 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) 我阅读了很多关于 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 ×8
jsf-2 ×6
commandlink ×2
primefaces ×2
action ×1
ajax ×1
ajax-update ×1
ajax4jsf ×1
dom ×1
domexception ×1
facelets ×1
forms ×1
javascript ×1
mojarra ×1
myfaces ×1
render ×1
richfaces ×1
uiinclude ×1
viewstate ×1