2

私はこの質問が何度も聞かれたことを知っています、私はそれらの多くを読みました、しかし私は基本的なものが欠けていると思うので、それは私にとってはうまくいきません。

(プロジェクトはJSF2、Netbeans 7.3beta、Glassfish3 ..、およびWCFで記述されたWebサービスにあります)私はすでに何をしましたか?

  1. JSF2プロジェクトを作成します。
  2. プロジェクト、新しいWebサービスクライアントを右クリックします。WSDLURLを入力します。終了
  3. ManagedBeanを作成し、それを開きます。Webサービスから「DoWork」メソッドをドラッグアンドドロップします。
  4. 私の単純なコードを見てください(私はindex.htmlを持っています、そこで私は私のmanagedbeanで作成されたDataTableを表示します)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内で使用できないのはなぜですか?私は何を間違えましたか?DataTableに入力できるように、Beanで使用したいと思います...

4

0 に答える 0