2011-11-19 135 views
0

我對GWT和HTML表單有一個奇怪的問題。
我做了一個簡單的FormPanel,其中包含3個基本元素:FileUpload用於圖像上傳,TextBox用於圖像名稱和Button用於提交。一切正常(我可以至少保存圖像服務器端),除非我在輸入字段中輸入的值沒有值,即在Chrome的Inspect Element中,我清楚地看到它沒有值=「...」領域。GWT表單輸入字段沒有值

爲什麼會發生這種情況,我該如何解決?如果沒有名字,我不能保存這個名字。
編輯:

private final FlowPanel imagePanel = new FlowPanel(); 
private final FormPanel form = new FormPanel(); 
private final FileUpload fileUpload = new FileUpload(); 
private final Button submitButton = new Button("Upload"); 
private final TextBox fileName = new TextBox(); 
private final HorizontalPanel hp = new HorizontalPanel(); 
private final VerticalPanel vp = new VerticalPanel(); 

public void onModuleLoad() 
{ 
    vp.add(fileUpload); 
    hp.add(fileName); 
    hp.add(submitButton); 
    vp.add(hp); 
    form.add(vp); 

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

    fileUpload.setName("upload"); // image identifier, used in upload handler 

    fileName.setName("fileName"); 
    fileName.setValue("Enter file name"); 
    fileName.setMaxLength(40); 
    fileName.addStyleName("fileNameHint"); 

    RootPanel.get("uploadBar").add(form); 
    RootPanel.get("thumbnails").add(imagePanel); 
} 

這是所有除事件處理程序的佈局。發生在提交上的所有事情是檢查fileUpload值是否允許文件擴展名。

回答

0

value屬性定義節點的defaultValue屬性。設置value屬性(以編程方式或交互在控件中)不會更改元素的屬性。

如果您希望在Chrome的開發人員工具中查看元素的當前值,請在「元素」窗格中選擇該元素(如果您使用「Inspect元素」上下文菜單項,則已選中)並在JavaScript控制檯中鍵入$0.value

+0

好的,所以我可以查看開發工具中的值,但是如何使該值在表單提交中出現?目前它是NULL,我不知道爲什麼是這樣,因爲form.onSubmit()中的input.getValue()返回正確的值,但在服務器端它給了NULL。 – jurchiks

+0

對不起,你說「一切正常」,所以我認爲你只有開發工具的問題。確保你的'TextBox'上有'setName',當然它在'FormPanel'內。如果您顯示構建UI的代碼,它可能會有所幫助。 –

+0

添加了代碼。 – jurchiks

1

在同一張紙條上,我的問題的根本原因是我太早調用了form.reset()。請注意,非常輸入的字段將是form.submit()和form.reset()的目標。所以你的TextBox也會以form.submit()的形式發送,如果你調用reset,它會被清除。