小编roe*_*oel的帖子

JBoss AS 7.1.1没有拿起我的JSF实现

当我在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.xmlWEB-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)

java jsf jboss7.x

8
推荐指数
1
解决办法
9387
查看次数

在jboss 6下使用我的log4j

我想在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上运行?

jboss log4j jboss6.x

7
推荐指数
1
解决办法
9606
查看次数

primefaces datatable rowedit不更新单元格元素

我有一个带有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)

datatable jsf listbox primefaces

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

如何将参数值传递给a4j:jsFunction

在我的页面上,我有一个按钮,用于打开弹出窗口中的项目列表.当我在列表中选择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从不被调用.

我的问题有解决方案吗?

ajax jsf richfaces ajax4jsf jsf-2

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

多次重复使用同一页面

是否可以多次重复使用一个页面连接到不同的对象?

我有一个页面,你可以输入个人信息(姓名,地址,社会号码,......)连接到一个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的负面观点是,它不是那么"酷"(从众不同的角度来看)

java xhtml jsf include

5
推荐指数
1
解决办法
2828
查看次数

Primefaces:向datatable添加一个新行给出错误:DataModel必须在启用选择时实现org.primefaces.model.SelectableDataModel

我有一个数据表,我想添加一个新行.执行此操作时,我收到以下错误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)

datatable jsf primefaces

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

标签 统计

jsf ×5

datatable ×2

java ×2

primefaces ×2

ajax ×1

ajax4jsf ×1

include ×1

jboss ×1

jboss6.x ×1

jboss7.x ×1

jsf-2 ×1

listbox ×1

log4j ×1

richfaces ×1

xhtml ×1