2

我知道这个问题被问了很多次,我读了很多,但我认为我缺少基本的东西,所以它对我不起作用..

(项目在 JSF2、Netbeans 7.3beta、Glassfish3.. 和用 WCF 编写的 Web 服务中)我已经做了什么:

  1. 创建一个 JSF2 项目。
  2. 右键单击项目,新建 Web 服务客户端。填写 WSDL URL。结束
  3. 创建 ManagedBean,打开它。从我的 Web 服务中拖放“DoWork”方法。
  4. 看看我的简单代码(我有 index.html,我在其中显示 DataTable,它是在我的 managedbean 中创建的) index.html

    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:p="http://primefaces.org/ui">     
        <h:head><title>IGNORED</title></h:head>
        <h:body>
            <ui:composition template="/templates/masterPage.xhtml">         
                <ui:define name="content">
                    <h:form>
                       <h3>and #{bean.tst}!</h3>                           
                       <p:dataTable value="#{bean.rows}" var="row">
                           <p:columns value="#{bean.columns}" var="column" headerText="#{bean.headers[column]}">
                           #{row[column]}
                           </p:columns>
                       </p:dataTable>  
                    </h:form>
                </ui:define>                        
            </ui:composition>
        </h:body>
    </html>
    

和... bean.java

    @Named(value = "bean")
    @SessionScoped
    public class Bean implements Serializable {  
        @WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_62599/TestService.svc.wsdl")
        private TestService service;

        ... // list, maps.. not important for this example

        public Bean() {
            columns = new ArrayList<String>();  
            rows = new ArrayList<Map<String, Object>>();         
            headers = new HashMap<String,String>();

            // Columns:
            for(int i = 0 ; i < 4 ; i++)  
            {
                String column_id = "c" + i;
                String column_name = "Column name " + i;           
                columns.add(column_id);                                    
                headers.put(column_id, column_name);            
            }

            // Rows:
            for(int i = 0 ; i < 100 ; i++)  
            {               
                Map<String,Object> m = new HashMap<String,Object>();
                m.clear();          
                for(int j = 0 ; j < 4 ; j++)  
                {
**// HERE IT DOESNT WORK in table i've got Content:Null**
                    m.put("c" + j, "Content:" + Tst); 
                }                                               
                rows.add(m);
            }       
        }

        private String Tst;
        public String getTst() {
            return doWork("Test");
        }

        private String doWork(java.lang.String str) {
            DataTable.ITestService port = service.getBasicHttpBindingITestService();
            return port.doWork(str);
        } 
    }

为什么我不能在我的托管 bean 中使用它?我做错了什么?我想在 bean 中使用它,这样我就可以填充我的 DataTable ...

4

0 回答 0