1

私は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 を適切に修正してもらえますか?

4

1 に答える 1

2

Seaside 30 と Seaside 3.1 を確認しました (Pharo CI サーバーhttps://ci.inria.fr/pharo-contribution/を使用)。

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: '/'. 

したがって、おそらくバグを見つけました。

于 2013-06-30T07:35:35.670 に答える