我正在使用GWT 2.4。我正在尝试提交一个AJAX请求,唯一的输入是页面上文本字段的值。以下是我将处理程序附加到页面按钮的方法......
public void onModuleLoad() {
...
final com.google.gwt.dom.client.Element submitElement = Document.get().getElementById(SUBMIT_BUTTON_ID);
final Button submitButton = Button.wrap(submitElement);
...
// Add a handler to send the name to the server
GetHtmlHandler handler = new GetHtmlHandler();
submitButton.addClickHandler(handler);
}
但这是问题所在。在我的处理程序中,每当我尝试获取文本字段的值时,它总是返回首次加载页面时在文本字段中输入的值,而不是最新的值...
class GetHtmlHandler implements ClickHandler {
/**
* Fired when the user clicks on the submitButton.
*/
public void onClick(ClickEvent event) {
submitRequest();
}
/**
* Send the name from the nameField to the server and wait for a
* response.
*/
private void submitRequest() {
...
final Element nameFieldElement = DOM.getElementById(Productplus_gwt.NAME_FIELD_ID);
// This always returns an old value.
String docId = nameFieldElement.getAttribute("value");
任何人都知道如何在我的处理程序中编写GWT代码,以返回给定页面ID的文本字段的最新值?
谢谢, - 戴夫
答案 0 :(得分:2)
尝试使用DOM.getPropertyString / DOM.getElementProperty
以下是来自GWT源的javadoc for getAttribute函数。它清楚地表明,对于几个浏览器,对javascript的“getAttribute”函数的支持可能不一致,因此应该使用Element和子类。
或者你可以使用DOM.getPropertyString来获取一个使用javascript的对象表示法获取当前值的值
/**
* Retrieves an attribute value by name. Attribute support can be
* inconsistent across various browsers. Consider using the accessors in
* {@link Element} and its specific subclasses to retrieve attributes and
* properties.
*
* @param name The name of the attribute to retrieve
* @return The Attr value as a string, or the empty string if that attribute
* does not have a specified or default value
*/
public final String getAttribute(String name) {
return DOMImpl.impl.getAttribute(this, name);
}
我尝试使用javascript的“getAttribute”函数来获取IE8和FF6中文本字段的值。 IE给出了文本字段的更新值,而FF没有。这是小提琴
答案 1 :(得分:0)
就像你说这是一个AJAX请求所以无论你有什么代码...... GWT代码都会继续运行。
您应该使用请求的回调并在那时检查nameFieldElement的值。