2013-01-16 121 views
0

我正在開發需要表單的應用程序,但我不知道如何製作它。我正在尋找有用的信息(手冊,書籍等),但我找不到任何有用的信息。我想製作一個表單,當用戶點擊按鈕時,我想收集表單中的信息。使用uiBinder在gwt中構建表格

我正在使用GWT和UiBinder進行開發。

InterfazUsuario.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui" 
    > 
<g:DockLayoutPanel unit='EM'> 
    <g:center> 
     <g:FormPanel ui:field="form" action="/InterfazUsuario"> 
      <g:HTMLPanel height="427px"> 
       <g:Label text="Idioma:" width="49px"/> 
       <g:ListBox visibleItemCount="1" name="lbIdioma" width="118px" ui:field="rellenarIdioma"/> 
       <g:Label text="Tipo de Recurso:" width="100px"/> 
       <g:ListBox ui:field="rellenarTipoRecurso" name="lbTipoRecurso" visibleItemCount="1" width="118px"/> 
       <g:Label text="Motor de Búsqueda:" width="125px"/> 
       <g:ListBox name="lbMotorBusqueda" visibleItemCount="1" width="118px"/> 
       <g:Label text="Consulta:" width="125px"/> 
       <g:TextBox visibleLength="50" name="txtConsulta"/> 
       <g:Label text="Número de Recurso:" width="125px"/> 
       <g:ListBox name="lbNumRecurso" visibleItemCount="1" width="118px"/> 
       <g:Label text="Matriz:" width="125px"/> 
       <g:ListBox name="lbMatriz" visibleItemCount="1" width="118px"/> 
       <g:Label text="Fila:" width="125px"/> 
       <g:ListBox name="lbFila" visibleItemCount="1" width="118px"/> 
       <g:Label text="Columna:" width="125px"/> 
       <g:ListBox name="lbColumna" visibleItemCount="1" width="118px"/> 
       <g:Button width="142px" text="Aceptar" ui:field="btnAceptar"/> 
      </g:HTMLPanel> 
     </g:FormPanel> 
    </g:center> 
</g:DockLayoutPanel> 

InterfazUsuario.java

public class InterfazUsuario extends Composite { 

//interface InterfazUsuarioUiBinder extends UiBinder<Widget, InterfazUsuario> {} 
interface InterfazUsuarioUiBinder extends UiBinder<DockLayoutPanel, InterfazUsuario> {} 

private static final InterfazUsuarioUiBinder binder = GWT.create(InterfazUsuarioUiBinder.class); 

RootLayoutPanel root; 

@UiField 
ListBox rellenarIdioma; 

@UiField 
ListBox rellenarTipoRecurso; 

@UiField 
FormPanel form; 

@UiField 
Button btnAceptar; 

public InterfazUsuario(List<String> idiomas, List<String> tipoRecurso){ 
    System.out.println("Entra en el constructor"); 
    // sets listBox 
    initWidget(binder.createAndBindUi(this)); 
    for (Iterator iter = idiomas.iterator(); iter.hasNext();) { 
     System.out.println("Entra en el primer for"); 
     String name = (String) iter.next(); 
     rellenarIdioma.addItem(name); 

    } 

    System.out.println(rellenarIdioma.getItemText(1)); 

    for(Iterator iter = tipoRecurso.iterator(); iter.hasNext();){ 
     String tipoRec = (String) iter.next(); 
     rellenarTipoRecurso.addItem(tipoRec); 
    } 
    System.out.println("vamos a salir del constructor"); 

    // Add an event handler to the form. 
     form.addSubmitHandler(new FormPanel.SubmitHandler() { 
      public void onSubmit(SubmitEvent event) { 
      Window.alert("The text box must not be empty"); 

      } 
     }); 

    form.setAction("/InterfazUsuario"); 
    form.setEncoding(FormPanel.ENCODING_MULTIPART); 
    form.setMethod(FormPanel.METHOD_POST); 

    form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() { 
     @Override 
     public void onSubmitComplete(SubmitCompleteEvent event) 
        {Window.alert(event.getResults());      
     } 
     }); 
    System.out.println("despues de llamar al handler"); 
    System.out.println(form.getMethod()); 

} 

@UiHandler("btnAceptar") 
public void onClick(ClickEvent event) { 
     form.submit();     
    } 

public InterfazUsuario(){ 

} 

感謝。

+2

所以走一步看一步,有什麼上述問題碼? –

回答

1

我不認爲這就是GWT意味着要使用的方式。爲什麼不給每個ListBox一個ui:字段標識符,而是將ListBox中的值分配給共享數據類,並通過RPC將此類發送到服務器。