当我在JBoss AS 7.1.1中部署我的.war文件并调用时
FacesContext.class.getPackage().getImplementationTitle()
Run Code Online (Sandbox Code Playgroud)
和
FacesContext.class.getPackage().getImplementationVersion()
Run Code Online (Sandbox Code Playgroud)
当我在tomcat上部署它时,我会得到一个不同的版本.
JBoss:JSF JavaServer Faces API 2.0.1.Final
Tomcat:JSF Mojarra 2.0.6-FCS
看来JBoss没有选择我所拥有的正确的JAR WEB-INF\lib\.这会导致我的网站出现不同的行为.我试着解决这个问题
<context-param>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
但那没用.我用JBoss 71阅读了替代JSF实现,但显然它在7.1.1中没有解决.
我添加jboss-deployment-structure.xml到WEB-INF\包含以下内容.
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
<dependencies>
<module name="org.apache.commons.logging" />
<module name="org.apache.commons.collections" />
<module name="org.apache.log4j" />
<module name="org.dom4j" />
<module name="javax.faces.api" slot="1.2"/>
<module name="com.sun.jsf-impl" slot="1.2"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)
但是我的应用程序没有部署,我收到以下错误server.log:
14:06:14,733 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Critical error during deployment: : …Run Code Online (Sandbox Code Playgroud) 我想在JBOSS6上部署我的Web应用程序.应用程序本身可行,但日志记录不行.我使用log4j并在我的战争中添加了一个jboss-deployment-structure.xml.内容是
<jboss-deployment-structure>
<deployment>
<!-- Exclusions allow you to prevent the server from automatically adding some dependencies -->
<exclusions>
<module name="org.apache.log4j" />
<module name="org.jboss.logging" />
</exclusions>
</deployment>
Run Code Online (Sandbox Code Playgroud)
在我的log4j.xml中我有
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "dtd/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="LogAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:\\logs\\web.log"/>
<param name="MaxFileSize" value="10000KB"/>
<param name="MaxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%x %-5p [%d{yyyyMMdd HH:mm:ss}] - %c:%L - %m%n"/>
</layout>
</appender>
<logger name="be.sofico.web">
<level value="debug" />
<appender-ref ref="LogAppender" />
</logger>
Run Code Online (Sandbox Code Playgroud)
这一切都适用于tomcat和websphere(当我最后设置classloading parent时)
如何让它在JBOSS 6上运行?
我有一个带有rowedit的数据表.我的表的一列是一个列表框中的单元格,列表框中的项目是动态检索的(取决于另一个单元格中的值)我使用rowEditInit来设置selectedrow项目.我想更新列表框以检索正确的值.这不起作用.当我做
<p:ajax event="rowEditInit" listener="#{workOrderDetail.onEdit}" update="orderitemstable" />
Run Code Online (Sandbox Code Playgroud)
然后,当我单击铅笔图标时,我可以看到行切换到编辑模式并重新启动列表框项目.但它直接切换回非编辑模式.
但是,当我这样做
<p:ajax event="rowEditInit" listener="#{workOrderDetail.onEdit}" update="rmactionenumid" />
Run Code Online (Sandbox Code Playgroud)
然后单击铅笔图标将行置于编辑模式,但不会调用以检索列表框项.我的观点是,它不会触发rmactionenumid的更新.
有任何想法吗?
罗埃尔
这是我的jsf代码
<p:ajax event="rowEditInit" listener="#{workOrderDetail.onEdit}" update="rmactionenumid" />
<p:column >
<p:cellEditor>
<f:facet name="output">
<h:outputText id="rmactionenumidlabel" value="#{orderItem.rmActionRepr}" >
</h:outputText>
</f:facet>
<f:facet name="input">
<h:selectOneListbox id="rmactionenumid" value="#{orderItem.rmActionEnumId}" size="1" valueChangeListener="#{workOrderDetail.setActionRepr}">
<f:selectItems value="#{workOrderDetail.actionItems}"/>
<p:ajax event="change" update="partdiscount,labourdiscount,totalprice,:detail:wodetail:totals" execute="@this" />
</h:selectOneListbox>
</f:facet>
</p:cellEditor>
</p:column>
<p:column >
<p:rowEditor id="edit" />
</p:commandLink>
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
这是我的java bean代码
public List<SelectItem> getActionItems() throws MWSException {
ArrayList<SelectItem> actions = new ArrayList<SelectItem>();
if (getSelectedOrderItem() != null) {
ListManager lm = …Run Code Online (Sandbox Code Playgroud) 在我的页面上,我有一个按钮,用于打开弹出窗口中的项目列表.当我在列表中选择1项时,我想将项目的ID传递给我的第一页的后台.可能吗?它试图用它做a4j:jsFunction,a4j:param但它不起作用.
这是我的代码:
第1页:
<a4j:jsFunction name="renderGuarantor" render="guarantor" actionListener="#{prospectDetail.setNewGuarantor}">
<a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}" />
</a4j:jsFunction>
Run Code Online (Sandbox Code Playgroud)
popuppage:
<h:outputLink value="" onclick="window.opener.renderGuarantor(#{applicant.deposit_id});window.close();">
<h:graphicImage style="padding:0 1px; border:0" value="${path.staticRootUrl}images/confirm.gif" alt="${msg.applicantslist_select}" title="${msg.applicantslist_select}"/>
</h:outputLink>
Run Code Online (Sandbox Code Playgroud)
这是第一页的支持bean代码
private Integer newGuarantorId;
public void setNewGuarantor() {
guarantor = newGuarantorId;
}
public Integer getNewGuarantorId() {
return newGuarantorId;
}
public void setNewGuarantorId(Integer newGuarantorId) {
this.newGuarantorId = newGuarantorId;
}
Run Code Online (Sandbox Code Playgroud)
在弹出窗口中选择时,我的backingbean中的方法被调用,但是newGuarantorId为null并且setNewGuarantorId从不被调用.
我的问题有解决方案吗?
是否可以多次重复使用一个页面连接到不同的对象?
我有一个页面,你可以输入个人信息(姓名,地址,社会号码,......)连接到一个bean:前景.在某些情况下,我必须收集相关的个人信息.信用评分的例子(一个人和一个担保人).
所以我想用2包括.但是我怎样才能确保include1保存person1的信息而include2保存person2的信息?
<rich:tabPanel id="creditScoreTab" switchType="client" >
<rich:tab id="mainContractor" >
<ui:include src="includes/prospect.xhtml" />
</rich:tab>
<rich:tab id="guarantor">
<ui:include src="includes/prospect.xhtml" />
</rich:tab>
</rich:tabPanel>
Run Code Online (Sandbox Code Playgroud)
和facescontext
<managed-bean>
<managed-bean-name>prospect</managed-bean-name>
<managed-bean-class>be.foo.Prospect</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)
我找到了两个可能的解决方法: - 重复页面并在faces-config中定义2个bean(指向同一个java类) - 不使用tabpanel和include,但输入person1信息,然后保存并加载person2信息并保存person2 .
解决方法1的负面影响是它保持两次相同的代码.解决方法2的负面观点是,它不是那么"酷"(从众不同的角度来看)
我有一个数据表,我想添加一个新行.执行此操作时,我收到以下错误javax.servlet.ServletException:启用选择时,DataModel必须实现org.primefaces.model.SelectableDataModel.
我怎样才能解决我的问题?
这是我的xhtml
<h:commandLink action="#{workOrderDetail.addOrderItem}" >
<img src="${path.staticRootUrl}images/add.png" border="0" alt="${msg.workorderdetail_neworderitem}" title="${msg.workorderdetail_neworderitem}"/>
</h:commandLink>
<p:dataTable styleClass="ptable100" id="orderItems" var="orderItem" value="#{workOrderDetail.orderItems}" width="100%" height="200" widgetVar="results"
emptyMessage="#{msg.all_lists_no_records_found}" selection="#{workOrderDetail.selectedOrderItem}" selectionMode="single" onRowSelectUpdate=":detail:sub"
rowKey="#{orderItem.id}"
<p:ajax event="rowSelect" update=":detail:sub" />
Run Code Online (Sandbox Code Playgroud)
这是我的bean代码
List<IMWSOrderItem> orderList = null;
public void addOrderItem() throws MWSException {
IMWSOrderItem newOrderItem = getWorkOrder().getMWSOrder().getMWSOrderItem_Set().getNewMWSOrderItem();
getWorkOrder().getMWSOrder().getMWSOrderItem_Set().addMWSOrderItem(newOrderItem);
orderList = null;
}
public List<IMWSOrderItem> getOrderItems() throws MWSException {
if (orderList == null) {
orderList = new ArrayList(Arrays.asList(getWorkOrder().getMWSOrder().getMWSOrderItem_Set().getMWSOrderItems()));
}
return orderList;
}
public IMWSOrderItem getSelectedOrderItem() {
return selectedOrderItem;
}
public void setSelectedOrderItem(IMWSOrderItem newSelectedOrderItem) { …Run Code Online (Sandbox Code Playgroud)