Java 更改调用setResponsePage wicket时的按钮/链接图像
所以我在wicket中有我的按钮,我想把他设置为两个图像中的一个,这取决于两个条件中的一个。在一种情况下,该按钮也应禁用Java 更改调用setResponsePage wicket时的按钮/链接图像,java,image,apache,button,wicket,Java,Image,Apache,Button,Wicket,所以我在wicket中有我的按钮,我想把他设置为两个图像中的一个,这取决于两个条件中的一个。在一种情况下,该按钮也应禁用 private static final Image rwImage = new Image("rewindButton", new ContextRelativeResource("/images/rw.png")); private static final Image rwImageGrey = new Image("rewindButton", new Context
private static final Image rwImage = new Image("rewindButton", new ContextRelativeResource("/images/rw.png"));
private static final Image rwImageGrey = new Image("rewindButton", new ContextRelativeResource("/images/rw_grey.png"));
AjaxFallbackLink rewindButton = new AjaxFallbackLink("rw") {
@Override
public void onClick(AjaxRequestTarget target) {
// Sets page parameter to 0, and sets response page with a given page parameter.
setResponsePage(MessageStorePage.class, new PageParameters().add("currentPageParameter", 0));
//After calling above, currentPage=0;
}
};
// rewindButton.setOutputMarkupId(true);
// rewindButton.setOutputMarkupPlaceholderTag(true);
// Displays grayed out and disabled button if current page is the first one.
if (currentPage <= 0) {
rewindButton.add(rwImageGrey);
rewindButton.setEnabled(false);
} else
// Displays button if current page is not the first one.
rewindButton.add(rwImage);
// Adds "first page" button
add(rewindButton);
private static final Image rwImage=新图像(“倒带按钮”,new ContextRelativeResource(“/images/rw.png”);
私有静态最终图像rwmagegrey=新图像(“倒带按钮”,新上下文相对源(“/images/rw_grey.png”);
AjaxFallbackLink倒带按钮=新的AjaxFallbackLink(“rw”){
@凌驾
公共void onClick(AjaxRequestTarget目标){
//将页面参数设置为0,并使用给定的页面参数设置响应页面。
setResponsePage(MessageStorePage.class,new PageParameters().add(“currentPageParameter”,0));
//调用上述函数后,currentPage=0;
}
};
//倒带按钮。setOutputMarkupId(真);
//倒带按钮。setOutputMarkupPlaceholderTag(真);
//如果当前页是第一页,则显示灰显和禁用按钮。
如果(currentPage我认为存在缓存问题,因为您用不同的图像替换相同的图像(相同的id和全部),wicket或您的浏览器没有意识到它实际上是不同的。您应该看看生成的html是如何不同的
我认为显式禁用图像缓存可能是使其工作的一种方法
另一个快速解决方案可能是将两个图像添加到链接中,并根据上下文使其中一个图像不可见。好吧,我通过添加以下内容解决了这个问题:
Well, I got rid of the issue by adding:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
到我的html文件
这可能是一个肮脏的解决方案,但很管用。在单击重定向时使用ajax链接有什么特殊原因吗?也许这只是一个简单的例子,但如果没有,我宁愿在这种情况下使用普通的链接实现,例如链接
或书签页面链接
。没有,我需要它是ajaxore,这就是为什么它是这样的,但仍然将其更改为链接它不会解决我的问题-就我而言。我认为根据您的需要,您的用例有几种解决方案…这就是为什么我要问的原因。如果您不需要漂亮的URL,我宁愿让Wicket为我处理页面的状态,例如,有一个字段<代码>int currentPage=1;
在页面中并更改值onClick
。如果您确实需要或希望将其作为URL参数传递,您的示例缺少将页面参数读取到currentPage
的代码段,这可能是出错的地方。我需要setResponsePage重新加载整个页面,因为整个内容都取决于这个参数,您的意思是为什么我使用params而不是手动更改当前页面并设置没有参数的响应页面?另一个快速解决方案可能是将两个图像添加到链接中,并根据上下文使其中一个图像不可见。我创建了另一个wicket ID的附加按钮,因此没有一个是灰色的,另一个是正常的,我改变了它们的可见性,但它有时仍然显示灰色的图像,对于正常的(动作是正常的)反之亦然。请添加相关的代码示例。我怀疑存在一个错误,您忘记添加到ajaxrequest的链接,或者可见性被另一段代码重置,但如果不查看您的代码,我无法判断。-)我已经正确地完成了:)已找到部分解决方案tho:)