wicket - Wicket 获取按钮组件文本
问题描述
我想获取按钮的文本,submitProceed
并将在我的代码/逻辑中使用它。
HTML
<button wicket:id="submitProceed" type="button" class="btn btn-sm btn-primary btn-save" disabled="disabled">提交</button>
是否可以获得按钮文本Submit
?另外,我如何将其更改为Proceed
?
这就是我初始化按钮组件的方式:
private Component m_btnSubmit;
...
private Component createForm() {
Form<Void> result = new Form<>("form");
...
result.add(m_btnSubmit = createSubmit("submit"));
...
return result;
}
private Component createSubmit(String wicketId) {
AjaxButton result = new AjaxButton(wicketId) {
private static final long serialVersionUID = 1L;
@Override
protected void onConfigure() {
super.onConfigure();
...
setOutputMarkupId(true);
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
...
}
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
super.onSubmit(target, form);
// TODO: Get button text here
// Check button text if either `Submit` or `Proceed`
// Action depending on button text (Also change button text)
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
...
}
};
...
return result;
}
解决方案:
首先,我要感谢 @Andrea 和 @martin 的解决方案,我只是稍微调整一下以适应我现有的代码。
因为我需要一个包含文本的跨度,Submit
然后再更改为Proceed
......我需要在按钮标签内添加一个跨度,如下所示:
<button wicket:id="submit" type="button"><span wicket:id="labelSubmit">提交</span≶</button>
这个问题,我收到一个错误,似乎它不允许按钮具有嵌套组件。
错误是这样的: org.apache.wicket.markup.MarkupException: Expected close tag for '<button wicket:id="submit" type="button">' 可能尝试嵌入组件 '<span wicket: id="labelSubmit">' 在该组件的主体中丢弃其主体。
为了解决这个问题,我需要从 更改为button
,a
所以它看起来像这样:
<a wicket:id="submit" type="submit"><span wicket:id="labelSubmit">提交</span≶</a>
...
IModel m_labelModel = Model.of("Submit");
Label m_labelSubmit = new Label("labelSubmit", m_labelModel);
m_labelSubmit.setOutputMarkupId(true);
...
在我的按钮中onSubmit
:
m_labelModel.setObject("Proceed");
target.add(this);
请注意,我只做了更改m_labelModel
,但我需要添加当前按钮 ( this
),以便更改将反映在 UI 中。
对于那些有相同问题或设置的人......希望这会有所帮助:)
解决方案
您应该使用按钮的构造函数,该构造函数也将模型作为按钮的标签:
IModel labelModel = Model.of("Submit");
new Button<>("submit", labelModel);
比你可以使用模型来获取/设置这个值
推荐阅读
- php - 如何替换所有匹配的 $character
- c# - 一些字符替换为问号符号
- flutter - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[NSURL initFileURLWithPath:]: nil string parameter”-_-
- java - Spring web应用+hibernate问题:通过字段表达的不满足依赖
- javascript - 拆分登陆页面被移动到左侧
- java - 杰克逊的 InvalidDefinitionException
- swift - 即使我使用 .randomElement() 方法 (Swift) 2019/2020,每日提醒(通知)也不会发送随机消息
- uwp - Line in style 的 TargetType 在 UWP 中不起作用
- c++ - 类方法返回指向具有模板的类成员的指针
- python - TypeError: print_lol() 得到了一个意外的关键字参数“fh”