- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个页面,根据我从上一页收到的列表显示一些单选选项。具体来说——第一页 --> 按下提交按钮 --> 生成列表 --> 本页 --> 填充单选组(使用 ListView )
问题是所有页面都在应用程序启动时初始化。因此,如果我在构造函数中填充我的单选按钮组,我会得到一个空白页面(因为列表为空)。
此外,如果我在构造函数之外初始化我的单选按钮组或 ListView ,我会收到“wicket id not found”错误(因为 wicket 在初始化时在类中找不到 wicket:id)。
这是我的 HTML 代码:
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<head>
</head>
<body>
<wicket:panel>
<form wicket:id="selectionPageForm">
<table width="100%" cellpadding="5" class="datapass">
<tr>
<td>
<div wicket:id="selectGroup">
<span wicket:id="selectRepetor">
<input type="radio" class="radioAlign" wicket:id="selection" checked="checked"/>
<label class="check" style="float:none;" wicket:id="name">[bankName]</label>
</span>
</div>
</td>
</tr>
</table>
<div wicket:id="feedback"></div>
</form>
<hr>
</wicket:panel>
</body>
</html>
这是我的 Java 页面:dataPassRegister只是一个包含String ArrayList的POJO
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.Radio;
import org.apache.wicket.markup.html.form.RadioGroup;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import com.googlecode.wicket.jquery.ui.panel.JQueryFeedbackPanel;
import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
public class SelectionPage extends AbstractFormDialog<DataPassRegister>{
private final Form<DataPassRegister> form;
private final FeedbackPanel feedback;
protected final DialogButton btnSubmit = new DialogButton("Submit");
protected final DialogButton btnCancel = new DialogButton(LBL_CANCEL);
private ArrayList<String> nameList = new ArrayList();
public SelectionPage(String id, String title, DataPassRegister dataPassRegister) {
super(id, title, true);
this.form = new Form<DataPassRegister>("selectionPageForm");
final RadioGroup selectGroup = new RadioGroup("selectGroup");
if(dataPassRegister.getNameList() != null){
nameList = dataPassRegister.getNameList();
System.out.println("In selection - In if condition - List : " + nameList.toString());
}
final ListView selectRepetor = new ListView("selectRepetor", nameList)
{
@Override
protected void populateItem(final ListItem item)
{
final Radio radio = new Radio("selection", new Model(item.getModelObject().toString()));
final Label label = new Label("name", new Model(item.getModelObject().toString()));
item.add(radio);
item.add(label);
}
};
selectGroup.add(selectRepetor);
this.feedback = new JQueryFeedbackPanel("feedback");
this.form.add(selectGroup);
this.form.add(this.feedback);
this.add(this.form);
}
@Override
public Form<?> getForm() {
return this.form;
}
@Override
public void setModelObject(DataPassRegister dataPassRegister)
{
this.setDefaultModel(new CompoundPropertyModel<DataPassRegister>(dataPassRegister));
}
@Override
protected List<DialogButton> getButtons()
{
return Arrays.asList(this.btnSubmit, this.btnCancel);
}
@Override
protected DialogButton getSubmitButton() {
return this.btnSubmit;
}
@Override
protected void onError(AjaxRequestTarget target) {
target.add(this.feedback);
}
@Override
protected void onSubmit(AjaxRequestTarget target) {
}
}
如何在构造函数外部或在某种条件(列表不为空)下填充单选组,而不会导致 wicket:id 错误?请帮忙。欢迎任何建议。
最佳答案
已更新代码片段
页面已安装在 App init() 方法中 - 因此创建了“实例”
mountPage("radioOptionPage", TestTargetPage.class);
首页 - Java
private void addFormComponent(Form<Void> form) {
final FeedbackPanel panel = new FeedbackPanel("statusbarpanel");
panel.setOutputMarkupId(true);
form.add(panel);
AjaxFallbackButton button = new AjaxFallbackButton("submitbtn", form) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
PageParameters parameters = new PageParameters();
for(int i = 0; i < 3; i++){
String random = RandomStringUtils.random(4, true, true);
parameters.add(random, random);
}
setResponsePage(TestTargetPage.class, parameters);
}
};
form.add(button);
}
首页 - 标记
<body>
<form wicket:id="imageForm">
<div wicket:id="statusbarpanel"></div>
<input type="submit" wicket:id="submitbtn" value="Click Me !!!"/>
</form>
</body>
第二页 - Java
public class TestTargetPage extends WebPage {
private FormModel model = new FormModel();
public TestTargetPage(PageParameters parameters) {
List<String> options = new ArrayList<String>();
if (parameters != null){
List<INamedParameters.NamedPair> allNamed = parameters.getAllNamed();
for (INamedParameters.NamedPair pair : allNamed){
options.add(pair.getValue());
}
model.setObject(options);
}
Form<Void> form = new Form<Void>("targetForm");
RadioChoice<String> radiOptions = addRadioGroups("radio");
form.add(radiOptions);
add(form);
}
private RadioChoice<String> addRadioGroups(String wicketId) {
List<String> radioOptions = model.getObject();
RadioChoice<String> radioChoice = new RadioChoice<String>(wicketId, radioOptions);
radioChoice.setOutputMarkupId(true);
return radioChoice;
}}
第二页 - 标记
<body>
<h1>Wicket RadioChoice Example</h1>
<form wicket:id="targetForm">
<p>
<label>Radio options :</label>
<br />
<span wicket:id="radio"></span>
</p>
<input type="submit" value="Display" />
</form>
</body>
如果我理解正确,您想要的只是在页面加载时动态设置单选组。在这种情况下,您可以为页面设置模型对象,从上一页填充该模型对象,并将源页面设置为目标页面中的默认模型对象,然后重定向到该目标页面。
通过为页面设置默认模型对象,您应该能够根据需要设置单选按钮。单选按钮的值将来自页面的默认模型对象。
关于java - Wicket:在页面构造函数外部动态填充 RadioGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809689/
过去,我为我的表单构建了如下标签: : 我还需要使用wicket:label吗?标签?我没有使用 wicket:label在 wicket 7 中,它似乎工作正常。我可能不理解使用 wicket:la
是否可以为 MarkupContainer 生成标记?动态地,即不为其存储 HTML 文件? 我考虑将标记作为纯字符串从数据库中读取,以提供类似 CMS 的功能。 最佳答案 有趣的问题,我不确定这是否
是否有适用于 Wicket 1.5 的有效、支持和维护的脚手架解决方案?我知道 Wicketopia 位于两个不同地点 sourceforge和 github但这仍然针对 wicket 1.4,带来了
我想了解一些关于 wicket 支持泛型模型的信息。我了解了模型、 Prop 模型和 Prop 复合模型。 但是 Model 类呢?如果我这样做会发生什么: Label label = new Lab
如何在 Wicket 中实现多选下拉。我能够使用 bootstrap 创建多选下拉 View ,但我无法获得如何将所选选项与下拉组件的 IModel 相关联? Wicket 有没有可能?我不想使用 L
我正在使用 wicket 1.4.9 并实现了 spring + wicket auth-role 并根据页面上的角色使用@AuthorizeInstantiation。我有多个自定义角色。 我已经按
如何在 Wicket 1.5 中执行以下操作? page.getRequestCycle().setRequestTarget(new RedirectRequestTarget("http://ww
我想用密码保护 Wicket 中的网页,以便用户只有在他/她登录后才能访问它。 我还希望该页面显示登录页面,然后在登录用户试图访问的原始页面后。 这是如何用 wicket 完成的?我已经创建了一个登录
我使用的是 wicket 1.5,但在 getClientInfo() 方法中看不到 (WebRequest)RequestCycle.get().getRequest() 我在另一个地方看到了这段代
我刚刚尝试了 Apache Wicket“Hello, world”应用程序,我注意到在呈现的 HTML 输出中,Wicket 暴露了它的内部属性。 这是呈现的 HTML 在浏览器的“查看源代码”中的
我找不到像 wicket:include 之类的 wicket 标签?谁能建议我什么?我想在 html 文件中包含/注入(inject)原始源代码?如果没有这样的实用程序,有什么建议来开发它吗? 更新
在页面中查找特定(已知 wicket id)Wicket 组件的方法是什么? 最佳答案 您的选择是: get()搜索一个组件的方法 特定路径上的组件。 安 iterator()在拥有他所有 child
我正在为 wicket 页面编写测试。我的页面上有三个下拉菜单。根据从下拉列表中选择的值,面板会被渲染(面板包含一个数据表)。 如何更改 wicket 测试中下拉菜单的值,以便我可以针对所选值的不同组
在我的 wicket 应用程序中,有一些页面供用户使用,具体取决于他们的角色和不同的标准。在我的数据库中,我存储了用作该用户背景的图像路径。每个用户都有一个独特的页面。我知道我可以添加读取图像,如果我
如何在 Wicket 中定义我自己的反馈消息? 例如:如果我提供了一个错误的用户名,我想得到一个错误信息,如“用户名不正确,请尝试再次登录”。而不是使用默认的错误消息。 一个例子会是什么样的? 最佳答
假设我想要 3 个不同的 *.html 用于 WebPage。 F.e. page_small.html、page_tablet.html、page_desktop.html。我如何解析 screen
我无法确定 Wicket 应用程序中 RuntimeException 的原因。我设置了许多断点,但是当我提交表单时,只有在加载表单时,没有一个断点被触发。这是堆栈: WicketMessage: N
我刚刚编写了我的第一个 Wicket 组件 :) 它包含一个 ListView 和一些 Radio 输入字段。现在我想对所选值是否进入模型进行单元测试。 由于 WicketTester.newForm
我的类属性有两个 CSS 类值。 HTML 开头是这样的: 我想动态地把它改成这样: 目前我正在这样做: component.add(new SimpleAttributeModifier("cl
我有一个使用 PropertyModel 的文本字段,如下所示: TextField ageField = new TextField("age", new
我是一名优秀的程序员,十分优秀!