小编ste*_*eve的帖子

添加一个TableRowSorter添加值来建模原因java.lang.IndexOutOfBoundsException后:无效范围

将TableRowSorter添加到表及其对应的模型之后,任何相应的添加都会特别添加firetabletablerowsinserted导致异常.从测试中可以清楚地看出,GetRowCount()返回的值超出了模型范围.但是,添加分拣机或过滤器后,如何继续向表中添加值对我没有意义?

作为一个例子,我在向表中添加任何内容之前设置行过滤器,然后在我的模型中使用以下调用向表中添加一个值:

this.addRow(row, createRow(trans,row));
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());
Run Code Online (Sandbox Code Playgroud)

rowcount的大小为1,抛出异常:

java.lang.IndexOutOfBoundsException: Invalid range
at javax.swing.DefaultRowSorter.checkAgainstModel(Unknown Source)
at javax.swing.DefaultRowSorter.rowsInserted(Unknown Source)
at com.gui.model
Run Code Online (Sandbox Code Playgroud)

如果我在没有先添加分拣机的情况下执行相同的步骤,一切都很好.我假设我可能需要通知模型分拣机可能已经进行了更改并尝试了以下但仍然返回异常:

this.addRow(row, createRow(trans,row));
this.fireTableStructureChanged()
this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());
Run Code Online (Sandbox Code Playgroud)

我甚至试图通知模型内部的分拣机,在调用fire之前已经将一个值添加到模型中,但是它也失败了:

 this.addRow(row, createRow(trans,row));
 if(sorter.getRowFilter() != null){
      //if a sorter exists we are in add notify sorter
      sorter.rowsInserted(getRowCount(), getRowCount());
  }
  this.fireTableRowsInserted(this.getRowCount(), this.getRowCount());
Run Code Online (Sandbox Code Playgroud)

最后,我对FireTableRowsInsterted(0,0)进行了硬编码,并且不会抛出任何异常.但没有任何东西被添加到表中?所以,我知道这绝对是某种类型的OutOfBounds问题.我看了一遍,似乎无法找到答案.如果有人知道这是如何工作的,那将是非常有帮助的.以下是在jpanel中设置分拣机的代码:

    messageTable.setRowSorter(null);
     HttpTransactionTableModel m = getTransactionTableModel();
     final int statusIndex = m.getColIndex("status");
     RowFilter<Object,Object> startsWithAFilter = new RowFilter<Object,Object>() {
           public boolean include(Entry<? extends Object, ? extends Object> entry) {

               for(char responseCode:responseCodes)
               {
                   if (entry.getStringValue(statusIndex).startsWith(Character.toString(responseCode))) {
                         return true; …
Run Code Online (Sandbox Code Playgroud)

swing jtable tablerowsorter

11
推荐指数
1
解决办法
1万
查看次数

将WSDL转换为其各自的HTTP绑定

我只是试图将WSDl转换为来自WSDL提供的数据的许多不同的HTTP请求.我已经阅读了大量类似的问题,但没有一个真正提供了答案.

有人说使用SOAPUI - 我熟悉这个应用程序并使用它.但我需要自己从WSDL创建这些HTTP请求.

有人说要尝试JAXWS - 我在这个和Axis上查看了许多教程,这些教程将WSDL转换为Java类绑定,并使用这些方法来测试Web服务.我真的想自己生成HTTP请求,这样我就可以操作请求并发送自己的测试.

我开始使用wsdl4j开始自己解析WSDL,但是在我完全确定我没有重新发明轮子之前,我宁愿不要走这条路.在我看来,过去一直需要这个吗?但是使用WSDL4J和其他所有库我都没有看到SoDL消息转换的WSDL.

任何建议都会非常有帮助.目标是我希望能够获取WSDL,检查它并为WSDL中的每个方法创建HTTP-SOAP请求,并且能够测试它们的安全性问题.第一步是创建这些请求!

service soap wsdl web

5
推荐指数
1
解决办法
2821
查看次数

浏览器发送CONNECT请求后,创建代理无法正确通过SSL?

我已经困扰了一段时间,现在试图让我的自定义代理在浏览器发送CONNECT请求时正确处理.为了简单起见,让我解释一下我是如何处理这个过程的.也许在那时,有人可以帮助澄清我做错了什么.

  1. 在端口8080上使用ServerSocketChannel创建服务器.
  2. 将ServerSocketChannel绑定到Selector,它实质上允许在服务器等待来自端口8080的请求时进行非阻塞.
  3. 只要我将浏览器设置为端口8080并发送请求https://google.com,它就会通知选择器发送到端口8080的内容.
  4. 我得到了这个请求并看到它的CONNECT所以我立即创建了一个响应"建立连接"(我发送和接收的请求和响应在下面)

浏览器请求:

CONNECT google.com:443 HTTP/1.1 User-Agent:Mozilla/5.0(Windows; U; Windows NT 6.1; en-US; rv:1.9.2.18)Gecko/20110614 Firefox/3.6.18 GTB7.1代理连接: keep-alive主持人:google.com

响应我通过普通套接字发送回浏览器:

建立HTTP/1.1 200连接\ r \nProxy-connection:保持活动\ r \n\r \n

  1. 现在我等待从浏览器发送的东西,我假设此时将发送SSL请求但是没有任何东西被发送.我开始认为它是因为我没有与浏览器建立SSL握手,所以它不会通过默认创建的套接字发送SSL消息.您认为我需要通过端口8080关闭该套接字并在我将连接建立的响应发送回浏览器之前在端口8080上建立新的SecureSocket吗?这是我的下一步.我知道浏览器需要在初始CONNECT之后向我发送更多数据.我没有足够的数据只有CONNECT才能进入服务器.我想它不需要在SSL中向我发送类似以下内容的其他请求:

GET/Host:google.com

一旦我得到类似的东西,那么我可以与服务器建立我的安全套接字连接,并返回响应发送回浏览器.

你在正确的轨道上怎么想?只是在我发送连接后我没有收到任何其他消息.

java sockets ssl http

2
推荐指数
1
解决办法
1023
查看次数

标签 统计

http ×1

java ×1

jtable ×1

service ×1

soap ×1

sockets ×1

ssl ×1

swing ×1

tablerowsorter ×1

web ×1

wsdl ×1