如何在gwt-bootstrap3中添加表单元素
我试图在gwt-bootstrap3模式中添加一些元素,我使用UI绑定器生成屏幕,但没有显示任何内容 我的ui活页夹类如何在gwt-bootstrap3中添加表单元素,gwt,gwtbootstrap3,Gwt,Gwtbootstrap3,我试图在gwt-bootstrap3模式中添加一些元素,我使用UI绑定器生成屏幕,但没有显示任何内容 我的ui活页夹类 <?xml version="1.0" encoding="UTF-8"?> <ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:b='urn:import:org.gwtbootstrap
<?xml version="1.0" encoding="UTF-8"?>
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:b='urn:import:org.gwtbootstrap3.client.ui'
xmlns:res="urn:with:com.db.cary.client.resources.CSSResources">
<ui:with type="com.db.cary.client.resources.CSSResources" field="res">
</ui:with>
<b:Modal closable="true" fade="true" dataBackdrop="TRUE" dataKeyboard="true">
<b:ModalBody>
<b:Form type="HORIZONTAL">
<b:FieldSet>
<b:Legend>Please enter the book detail</b:Legend>
<b:FormGroup>
<b:FormLabel for="bookTitle" addStyleNames="col-lg-2">Title</b:FormLabel>
<g:FlowPanel addStyleNames="col-lg-10">
<b:TextBox placeholder="Enter book Title" ui:field="titleTextBox" />
</g:FlowPanel>
</b:FormGroup>
<b:FormGroup>
<b:FormLabel for="bookAuthor" addStyleNames="col-lg-2">Author</b:FormLabel>
<g:FlowPanel addStyleNames="col-lg-10">
<b:ListBox ui:field="authorListBox" />
<b:Button ui:field="newAuthorButton" type="LINK" size="EXTRA_SMALL">New author</b:Button>
</g:FlowPanel>
<g:FlowPanel addStyleNames="col-lg-offset-2 col-lg-10">
<b:TextBox ui:field="authorTextBox" placeholder="enter slash (/) separated list of authors"></b:TextBox>
</g:FlowPanel>
</b:FormGroup>
<b:FormGroup>
<b:FormLabel for="bookCategory" addStyleNames="col-lg-2">Category</b:FormLabel>
<g:FlowPanel addStyleNames="col-lg-10">
<b:ListBox ui:field="categoryListBox" />
<b:Button ui:field="newCategoryButton" type="LINK" size="EXTRA_SMALL">New Category</b:Button>
</g:FlowPanel>
<g:FlowPanel addStyleNames="col-lg-offset-2 col-lg-10">
<b:TextBox ui:field="categoryTextBox" placeholder="enter category"></b:TextBox>
</g:FlowPanel>
</b:FormGroup>
</b:FieldSet>
</b:Form>
</b:ModalBody>
<b:ModalFooter>
<b:Button type="PRIMARY" ui:field='submitButton'>Submit</b:Button>
<b:Button ui:field='cancelButton'>Cancel</b:Button>
</b:ModalFooter>
</b:Modal>
</ui:UiBinder>
请输入图书详细信息
标题
作者
新作者
类别
新类别
提交
取消
还有我的观点课
public class AddBook extends Modal {
interface CheckOutPopUpBinder extends UiBinder<Widget, AddBook> {
}
private static final CheckOutPopUpBinder binder = GWT.create(CheckOutPopUpBinder.class);
private final AuthorAndCategoryServiceAsync authorService = GWT.create(AuthorAndCategoryService.class);
private final LibraryServiceAsync libraryServiceAsync = GWT.create(LibraryService.class);
@UiField
TextBox titleTextBox;
@UiField
ListBox authorListBox;
@UiField
TextBox authorTextBox;
@UiField
ListBox categoryListBox;
@UiField
Button submitButton;
@UiField
Button cancelButton;
@UiField
Button newAuthorButton;
@UiField
Button newCategoryButton;
@UiField
TextBox categoryTextBox;
public AddBook(String title) {
binder.createAndBindUi(this);
setTitle(title);
initializeAuthorListBox();
initializeCategoryListBox();
}
private void initializeCategoryListBox() {
authorService.getCategories(null, new AsyncCallback<List<CategoryDTO>>() {
@Override
public void onFailure(Throwable arg0) {
Window.alert("unable to fetch category list");
}
@Override
public void onSuccess(List<CategoryDTO> arg0) {
for (CategoryDTO category : arg0)
categoryListBox.addItem(category.getCategoryName());
}
});
categoryListBox.setMultipleSelect(false);
categoryTextBox.setVisible(false);
}
private void initializeAuthorListBox() {
authorService.getAuthors(null, new AsyncCallback<List<AuthorDTO>>() {
@Override
public void onSuccess(List<AuthorDTO> arg0) {
for (AuthorDTO author : arg0) {
authorListBox.addItem(author.getAuthorName());
}
}
@Override
public void onFailure(Throwable arg0) {
Window.alert("Unable to fetch the list of authors");
}
});
authorListBox.setMultipleSelect(true);
authorTextBox.setVisible(false);
}
@UiHandler("cancelButton")
public void cancelAction(ClickEvent e) {
AddBook.this.hide();
}
@UiHandler("submitButton")
public void submitAction(ClickEvent e) {
AddBookDTO bookDTO = new AddBookDTO();
String bookTitle = titleTextBox.getText();
String bookCategory = categoryListBox.getSelectedValue() == null ? categoryTextBox.getText() : categoryListBox.getSelectedValue();
List<String> authorsList = new ArrayList<String>();
for (int i = 0; i < authorListBox.getItemCount(); i++) {
if (authorListBox.isItemSelected(i)) {
authorsList.add(authorListBox.getItemText(i));
}
}
if (null != authorTextBox.getText() && authorTextBox.getText().trim().length() > 0) {
String[] values = authorTextBox.getText().split("/");
for (String str : values) {
authorsList.add(str);
}
}
if (bookTitle == null || bookTitle.length() <= 0) {
Window.alert("Please enter a valid book title");
return;
} else if (bookCategory == null || bookCategory.length() <= 0) {
Window.alert("Please enter a valid book category");
return;
} else if (authorsList == null || authorsList.size() == 0) {
Window.alert("Please enter valid authors");
return;
}
bookDTO.setBookTitle(bookTitle);
bookDTO.setCategroyName(bookCategory);
bookDTO.setAuthors(authorsList);
libraryServiceAsync.addBook(bookDTO, new AsyncCallback<Boolean>() {
@Override
public void onFailure(Throwable arg0) {
Window.alert("There is some issue with database while adding book, Please contact your admin");
}
@Override
public void onSuccess(Boolean arg0) {
Window.alert("Book is successfully added !!!");
}
});
this.hide();
}
@UiHandler("newAuthorButton")
public void addAuthor(ClickEvent e) {
authorTextBox.setVisible(true);
}
@UiHandler("newCategoryButton")
public void addCategory(ClickEvent e) {
categoryTextBox.setVisible(true);
}
}
公共类AddBook扩展模式{
接口CheckOutpupBinder扩展UiBinder{
}
私有静态最终checkOutpupBinder binder=GWT.create(checkOutpupBinder.class);
私有最终AuthorAndCategoryService异步authorService=GWT.create(AuthorAndCategoryService.class);
私有最终LibraryServiceAsync LibraryServiceAsync=GWT.create(LibraryService.class);
@尤菲尔德
文本框标题框;
@尤菲尔德
列表框authorListBox;
@尤菲尔德
文本框authorTextBox;
@尤菲尔德
列表框类别列表框;
@尤菲尔德
按钮提交按钮;
@尤菲尔德
按钮取消按钮;
@尤菲尔德
按钮newAuthorButton;
@尤菲尔德
按钮新建类别按钮;
@尤菲尔德
文本框类别文本框;
公共AddBook(字符串标题){
binder.createAndBindUi(这个);
片名(片名);
initializeAuthorListBox();
初始化CategoryListBox();
}
private void initializeCategoryListBox()的初始值{
authorService.getCategories(null,新的AsyncCallback(){
@凌驾
失败时公共无效(可丢弃arg0){
Window.alert(“无法获取类别列表”);
}
@凌驾
成功时公共无效(列表arg0){
对于(类别到类别:arg0)
addItem(category.getCategoryName());
}
});
categoryListBox.setMultipleSelect(false);
categoryTextBox.setVisible(false);
}
私有的void initializeAuthorListBox(){
authorService.getAuthors(null,新的AsyncCallback(){
@凌驾
成功时公共无效(列表arg0){
for(AuthorDTO作者:arg0){
authorListBox.addItem(author.getAuthorName());
}
}
@凌驾
失败时公共无效(可丢弃arg0){
Window.alert(“无法获取作者列表”);
}
});
authorListBox.setMultipleSelect(真);
authorTextBox.setVisible(false);
}
@UiHandler(“取消按钮”)
公共作废取消操作(单击事件e){
AddBook.this.hide();
}
@UiHandler(“提交按钮”)
公共作废提交(点击事件e){
AddBookDTO bookDTO=新的AddBookDTO();
字符串bookTitle=titleTextBox.getText();
String bookCategory=categoryListBox.getSelectedValue()=null?categoryTextBox.getText():categoryListBox.getSelectedValue();
List authorsList=新建ArrayList();
对于(int i=0;i0){
String[]values=authorTextBox.getText().split(“/”);
for(字符串str:values){
authorsList.add(str);
}
}
如果(bookTitle==null | | bookTitle.length()您正在调用AddBook.this.show()
-这将显示作为此AddBook
实例基础的模式,而不是UiBinder模板中定义的实例。当您调用setTitle(title)时
您正在设置此实例的标题/标题-这就是为什么您看到的只是标题而不是模态的其余部分。您应该将ui:field
分配给UiBinder模板中定义的modal
,并显示/隐藏它
另外,AddBook
不应该扩展Modal
——它根本不应该扩展任何小部件类:)通常,UiBinder类正在扩展Composite
——因为您的UiBinder模板由各种小部件组成,Composite
用于将它们组合在一起,而不公开它们的任何API:您调用initWidget
,结果是binder.createAndBindUi(this)
。
但是,如果您正在创建一个小部件,其“主”小部件是Modal
,就像这里一样,您应该调用binder.createAndBindUi(this)
,忽略返回的小部件
(就像您现在所做的那样)。这是因为Modal
将自身附加到DOM,绕过任何GWT机制(实际上,它与之冲突)