事实上,我有一个班级负责收集网站帖子URL。我在分析每个页面网站时得到的文章
+http://dantri.com.vn/xa-hoi.htm
+http://dantri.com.vn/xa-hoi/trang-2.htm
....
+http://dantri.com.vn/xa-hoi/trang-9998.htm
+http://dantri.com.vn/xa-hoi/trang-n.htm
到属性网址如下。
public class Pagination {
private final StringProperty postURL = new SimpleStringProperty();
public String getPostURL() {
return postURL.get();
}
public void setPostURL(String value) {
postURL.set(value);
}
public StringProperty postURLProperty() {
return postURL;
}
public void gather() {
for (int i = 0; i < n; i++) {
for (String url : getAllURLToPage("http://dantri.com.vn/xa-hoi/trang-"+i+".htm")) {
setPostURL(url);
}
}
}
}
来自第http://dantri.com.vn/xa-hoi/trang-9998.htm===->http://dantri.com.vn/xa-hoi/trang-n.htm
页。
post url值是常量,所以我想在连续url相等时终止程序,例如newValue.equals(oldValue),如下所示
public static void main(String[] args) {
Pagination pagination = new Pagination();
pagination.postURLProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
if (newValue.equals(oldValue)) {
System.out.println("BREAK");
}
}
});
pagination.gather();
}
这只是newValue的例子,而oldValue总是与observableValue不相等。
我希望你能帮助我解决我的问题,我怎样才能控制帖子网址
答案 0 :(得分:2)
正如我在评论中指出的那样,为了响应属性中的更改,会调用ChangeListener
。如果您调用postURL.set(...)
并传递当前在postURL
中保存的相同值,则不会调用更改侦听器。 (TBH,目前尚不清楚该物业的目的是什么。)
您可以直接在for
循环中执行此操作:
public void gather() {
for (int i = 0; i < n; i++) {
for (String url : getAllURLToPage("http://dantri.com.vn/xa-hoi/trang-"+i+".htm")) {
if (Objects.equals(url, getPostURL())) {
System.out.println("BREAK");
}
setPostURL(url);
}
}
}
或者可能在set
方法中,假设您没有在其他地方拨打postURL.set(...)
:
public void setPostURL(String value) {
if (Objects.equals(value, postURL.get())) {
System.out.println("BREAK");
}
postURL.set(value);
}
但是ChangeListener
无法检测到缺少变更。