Smalltalk WAFileMetadataLibrary可能存在的问题
我在使用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/
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