2011-11-19 138 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,它会被清除。