Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修改PagingNavigator中Wicket链接生成的标记?_Wicket - Fatal编程技术网

如何修改PagingNavigator中Wicket链接生成的标记?

如何修改PagingNavigator中Wicket链接生成的标记?,wicket,Wicket,我正在使用一个定制的PagingNavigator组件,我正在寻找一种方法来更改为第一个、上一个和当前页面分页项生成的标记 这是我的分页导航器: <wicket:panel> <ul class="pagination"> <li class="first"> <a wicket:id="first">&lt;&lt;</a> </li> <li class="

我正在使用一个定制的PagingNavigator组件,我正在寻找一种方法来更改为第一个、上一个和当前页面分页项生成的标记

这是我的分页导航器:

 <wicket:panel>
<ul class="pagination">
    <li class="first">
        <a wicket:id="first">&lt;&lt;</a>
    </li>
    <li class="prev">
        <a wicket:id="prev">&#060;</a>
    </li>
    <li wicket:id="navigation" class="page">
        <a wicket:id="pageLink" href="#">
            <span wicket:id="pageNumber">5</span>
        </a>
    </li>
    <li class="dots">...</li>
    <li wicket:id="lastPage" class="jump"></li>
    <li class="next">
        <a wicket:id="next">&#062;</a>
    </li>
    <li class="last">
        <a wicket:id="last">&gt;&gt;</a>    
    </li>
</ul>
初始、上一页、第一页和当前页的非活动项列表中生成的标记如下:

<span title="Item Title" id="RandomID">
    <em>
      <span>ItemText</span>
    </em>
</span>
这使得不活动分页项目和当前页面的内容很难采用不同的样式。对于非活动项,我希望它输出如下内容:

<a href="#" title=ItemTitle" id="RandomID" class="inactive">ItemText</a>
对于当前页面,请执行以下操作:

 <a href="#" title=ItemTitle" id="RandomID" class="currentPage">ItemText</a>
我还注意到,当您开始对结果进行分页时,它会将SPAN标记插入到A标记中,并且由于这些结果上没有特定的类,因此正确地设置样式变得非常乏味

我一直在我们的代码库中搜索,找不到任何地方可以指定它,但因为我是一个前端人员,所以我很容易忽略它。据我所知,它们似乎是标准的分页导航链接

有什么想法吗?

如果你看这里:

在“使分页无状态”下,您可以了解如何覆盖分页导航的各个部分。

您可以扩展核心分页导航器:

 <wicket:panel>
<ul class="pagination">
    <li class="first">
        <a wicket:id="first">&lt;&lt;</a>
    </li>
    <li class="prev">
        <a wicket:id="prev">&#060;</a>
    </li>
    <li wicket:id="navigation" class="page">
        <a wicket:id="pageLink" href="#">
            <span wicket:id="pageNumber">5</span>
        </a>
    </li>
    <li class="dots">...</li>
    <li wicket:id="lastPage" class="jump"></li>
    <li class="next">
        <a wicket:id="next">&#062;</a>
    </li>
    <li class="last">
        <a wicket:id="last">&gt;&gt;</a>    
    </li>
</ul>
然后创建一个MyPagingNavigator.html,您可以在其中进行更改。但请确保不要从MyPagingNavigator.html中删除任何组件

您可以使用wicket源src/wicket/src/main/java/org/apache/wicket/markup/html/navigation/PagingNavigator.html中的原始内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html xmlns:wicket>
<body>
  <wicket:panel>
    <a wicket:id="first">&lt;&lt;</a>&nbsp;<a wicket:id="prev">&lt;</a>
    <span wicket:id="navigation">
          <a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
    </span>
    <a wicket:id="next">&gt;</a>&nbsp;<a wicket:id="last">&gt;&gt;</a>
  </wicket:panel>
</body>
</html>

为了解决这个问题,我必须扩展几个类。特别是,我需要重写 org.apache.wicket.markup.html.link.AbstractLink.disableLinkfinal ComponentTag标签

在AbstractLink的disableLink函数中,a标记被更改为span,href和onclick属性被剥离。我首先回溯到PagingNavigator,并将其扩展如下:

public class DreamPagingNavigator extends PagingNavigator {

    public DreamPagingNavigator(String id, IPageable pageable) {
        super(id, pageable);
    }

    public DreamPagingNavigator(String id, IPageable pageable, IPagingLabelProvider labelProvider) {
        super(id, pageable, labelProvider);
    }

    @Override
    protected PagingNavigation newNavigation(final String id, final IPageable pageable,
            final IPagingLabelProvider labelProvider) {
        return new DreamPagingNavigation(id, pageable, labelProvider);
    }

    @Override
    protected AbstractLink newPagingNavigationIncrementLink(String id, IPageable pageable,
            int increment) {
        return new DreamPagingNavigationIncrementLink<Void>(id, pageable, increment);
    }

    @Override
    protected AbstractLink newPagingNavigationLink(String id, IPageable pageable, int pageNumber) {
        return new DreamPagingNavigationLink<Void>(id, pageable, pageNumber);
    }

}
对于我的梦想主题,这允许我覆盖newPagingNavigationLink、newPagingNavigationIncrementLink等。我的PagingNavigationLink等实现随后修改了禁用行为,如下所示:

public class DreamPagingNavigationLink<T> extends PagingNavigationLink<T> {

    public DreamPagingNavigationLink(String id, IPageable pageable, long pageNumber) {
        super(id, pageable, pageNumber);
    }

    @Override
    protected void disableLink(final ComponentTag tag)
    {
        // if the tag is an anchor proper
        if (tag.getName().equalsIgnoreCase("a") || tag.getName().equalsIgnoreCase("link") ||
            tag.getName().equalsIgnoreCase("area"))
        {
            // Remove any href from the old link
            tag.remove("href");
            tag.remove("onclick");

        }
        // if the tag is a button or input
        else if ("button".equalsIgnoreCase(tag.getName()) ||
            "input".equalsIgnoreCase(tag.getName()))
        {
            tag.put("disabled", "disabled");
        }
    }

}
我没有将a标记更改为span,而是去掉href和onclick属性


现在我得到了一个没有href的锚标记。

该链接不再有效。以下是最新的链接: