通過讀取原始碼,發現struts2是通過Xwork中的XmlConfigurationProvider來讀取配置的.其中發現在xwork2.1版本中,是支援*號的通配讀取.但在xwork2.0中是不支援這樣的寫法.
所以在String2.1的版本中是可以使用<include file="resource/struts-config/*.xml"/>這樣的配置.在Struts2.0中是不支援這樣的配置
xwork2.1
Java代碼
- if ("include".equals(nodeName)) {
- String includeFileName = child.getAttribute("file");
- if (includeFileName.indexOf('*') != -1) {
- // handleWildCardIncludes(includeFileName, docs, child);
- ClassPathFinder wildcardFinder = new ClassPathFinder();
- wildcardFinder.setPattern(includeFileName);
- Vector<String> wildcardMatches = wildcardFinder.findMatches();
- for (String match : wildcardMatches) {
- finalDocs.addAll(loadConfigurationFiles(match, child));
- }
- } else {
- finalDocs.addAll(loadConfigurationFiles(includeFileName, child));
- }
- }
xwork2.0
Java代碼
- Element rootElement = doc.getDocumentElement();
- NodeList children = rootElement.getChildNodes();
- int childSize = children.getLength();
-
- for (int i = 0; i < childSize; i++) {
- Node childNode = children.item(i);
-
- if (childNode instanceof Element) {
- Element child = (Element) childNode;
-
- final String nodeName = child.getNodeName();
-
- if (nodeName.equals("include")) {
- String includeFileName = child.getAttribute("file");
- docs.addAll(loadConfigurationFiles(includeFileName, child));
- }
- }
- }
- docs.add(doc);
- loadedFileUrls.add(url.toString());