Smalltalk WAFileMetadataLibrary可能存在的问题

Smalltalk WAFileMetadataLibrary可能存在的问题,smalltalk,pharo,seaside,Smalltalk,Pharo,Seaside,我在使用WAFileMetadataLibrary时发现了一个可能的问题 addFileAt: aPath relativeToRootDirectory: relativeRootDirectory. 我遇到的问题是一些带有(../img/someImage.png)的css被指向 http://localhost:8080/files/img/someImage.png 而不是 http://localhost:8080/files/MyWAFileMetadataLibrary/img/

我在使用WAFileMetadataLibrary时发现了一个可能的问题

addFileAt: aPath relativeToRootDirectory: relativeRootDirectory.
我遇到的问题是一些带有(../img/someImage.png)的css被指向

http://localhost:8080/files/img/someImage.png

而不是

http://localhost:8080/files/MyWAFileMetadataLibrary/img/someImage.png

进一步查看代码后,我发现在addFileAt:aPath relativeToRootDirectory:relativeRootDirectory中

有一条线

relativeFilepath := relativeFilepath replaceAll: pathSeparator  with:'/'. 
在这里,我发现带有“\”的路径(windows中的im)不会被“/”替换

所以我必须重写并将行更改为

relativeFilepath := relativeFilepath replaceAll: pathSeparator first with: $/.
这对我来说很有效,css的呼叫被指向

http://localhost:8080/files/MyWAFileMetadataLibrary/img/someImage.png


社区中的任何人都可以验证它,并让我知道我是否没有进一步把事情搞砸,如果可以,请您相应地更正WAFileMetadaLibrary?

我刚刚检查了Seaside 30和Seaside 3.1(使用Pharo CI服务器)

在Seaside 3.1中,代码为

addFileAt: aPath relativeToRootDirectory: relativeRootDirectory
| relativeFilepath pathSeparator |
relativeFilepath := aPath allButFirst: relativeRootDirectory size.
pathSeparator := GRPlatform current pathSeparator.

(relativeFilepath first = pathSeparator first) 
    ifTrue: [ relativeFilepath := relativeFilepath allButFirst ].

relativeFilepath := relativeFilepath replaceAll: pathSeparator first with: $/. 

self addFileNamed: relativeFilepath
    contents: (GRPlatform current 
            contentsOfFile: aPath
            binary: (self isBinaryAt: aPath))
你的修复看起来不错

的确是在海边30号

 relativeFilepath := relativeFilepath replaceAll: pathSeparator first with: '/'. 
所以你可能发现了一个bug