يتطلب GWT 2.1 Uibinder SimplePager سمة الموقع
سؤال
ما يمكن توفيره إلى سمة الموقع من
<c:SimplePager ui:field='pager' location='HERE' />
لقد جربت المركز ، لكنه لم ينجح ، أرى في تطبيق عينة النفقات أنه ليس لديهم سمة موقع ولكن بدلاً من ذلك قم بتعيينه على إنشاءه في Uibinder. لكنني لا أستطيع فعل ذلك لأنه سمة مطلوبة. ماذا أفعل؟
المحلول
يجب أن توفر SimplePager.TextLocation
, والتي يمكن أن تكون الوسط ، اليسار أو اليمين.
<c:SimplePager ui:field='pager' location='CENTER'/>
نصائح أخرى
الحل الوحيد الذي أراه في الوقت الحالي هو العمل مع @UiField(provided = true)
. لست متأكدًا مما إذا كان هذا من أي مساعدة ولكن تحقق من المثال الصغير أدناه على أي حال.
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"
xmlns:c="urn:import:com.google.gwt.user.cellview.client">
<ui:style>
</ui:style>
<g:HTMLPanel>
<c:CellList ui:field="list" />
<c:SimplePager ui:field="pager" />
<g:Button ui:field="more" text="addMore" />
</g:HTMLPanel>
</ui:UiBinder>
والعملاء:
public class TestView extends Composite {
private static TestViewUiBinder uiBinder = GWT.create(TestViewUiBinder.class);
interface TestViewUiBinder extends UiBinder<Widget, TestView> {}
@UiField(provided = true)
CellList<String> list;
@UiField(provided = true)
SimplePager pager;
@UiField
Button more;
private int counter = 0;
private ListDataProvider<String> provider;
public TestView() {
list = new CellList<String>(new TextCell());
pager = new SimplePager();
initWidget(uiBinder.createAndBindUi(this));
provider = new ListDataProvider<String>(getList());
provider.addDataDisplay(list);
pager.setDisplay(list);
pager.setPageSize(5);
}
private LinkedList<String> getList() {
LinkedList<String> list = new LinkedList<String>();
list.add("1st");
list.add("2nd");
list.add("3rd");
list.add("4th");
list.add("5th");
return list;
}
@UiHandler("more")
void onMoreClick(ClickEvent event) {
provider.getList().add(++counter + " more");
}
}
لا يمكن إنشاء فئة SimplePager بواسطة Uibinder ، لأنه لا يحتوي على محاكاة للموقع لإصلاح الخطأ.
بديل لـ uifield (متوفر = صحيح) ، والذي يسمح بتثبيت المتغير تلقائيًا هو إنشاء طريقة مصنع لتوجيه الصفحة خارج uibinder حول كيفية إنشاء مثيل له وإذا لزم الأمر ، قم بإعداد الكائن.
فيما يلي مثال على طريقة المصنع التي سيتم تطبيقها على أي فئة uifield SimplePager. uifield (المقدم = صحيح) سوف يتعامل مع العديد من مثيلات متفاوتة ، ولكن بالنسبة إلى واحد هو أبسط ، لأنه لا يجب أن تكون مهتمًا عند استخدام المتغير.
@UiFactory SimplePager createSimplePager() {
return new SimplePager(TextLocation.CENTER);
}