2014-11-25 229 views
2

当我尝试在我的Jenkins插件动作果冻文件中加载“sidepanel.jelly”时,我得到下一个错误。在Jenkins插件中无法加载sidepanel.jelly

javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: file:/C:/Documents%20and%20Settings/Tecnoy/Escritorio/vats_eclipse/src/main/resources/org/jenkinsci/plugins/vats/VatsBuildAction/index.jelly:4:42: <st:include> No page found 'sidepanel.jelly' for class org.jenkinsci.plugins.vats.VatsBuildAction at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:117) at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:717) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390) ... Caused by: org.apache.commons.jelly.JellyTagException: file:/C:/Documents%20and%20Settings/Tecnoy/Escritorio/vats_eclipse/src/main/resources/org/jenkinsci/plugins/vats/VatsBuildAction/index.jelly:4:42: <st:include> No page found 'sidepanel.jelly' for class org.jenkinsci.plugins.vats.VatsBuildAction at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:124) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) ...

我的果冻文件具有以下行

<?jelly escape-by-default='true'?> <j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout" xmlns:t="/lib/hudson"> <l:layout norefresh="true"> <st:include page="sidepanel.jelly" /> <l:main-panel> <h1>Vats Summary:</h1> <div id="canvas-holder"> <p><canvas id="chart-area" width="300" height="300"/></p> </div> <script type="text/javascript" src="${resURL}/plugin/vats/scripts/chart.min.js"></script> <script type="text/javascript"> ... </script> <canvas id="myChart" width="400" height="400"></canvas> </l:main-panel> </l:layout> </j:jelly>

任何想法,我该如何解决?

谢谢!

回答

4

<l:main-panel>标记和<l:layout norefresh="true">标记添加到index.jelly文件中。

,并且包括侧面板:

  • 通过构建(通过构造的一个参数)
    • 构建可以检索出其继承了执行方法的参数的行动从BuildStepCompatibilityLayer类(通过Extending Publisher)。
  • 在Action类创建getBuild()方法
  • 添加<st:include it="${it.build}" page="sidepanel.jelly" />标签与所述构建

果冻实施例(index.jelly):

<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project"> 
    <l:layout norefresh="true"> 
     <st:include it="${it.build}" page="sidepanel.jelly" /> 
     <l:main-panel> 
      <f:validateButton title="${%Restart Jenkins}" progress="${%Restarting...}" method="JksRestart" with="" /> 
     </l:main-panel> 
    </l:layout> 
</j:jelly> 

Java Action类示例:

package tryPublisher.tryPublisher; 

import hudson.model.Action; 
import hudson.model.AbstractBuild; 


public class ExampleAction implements Action { 
    AbstractBuild<?,?> build; 

    public ExampleAction(AbstractBuild<?,?> build) { 
     this.build = build; 
    } 

    @Override 
    public String getIconFileName() { 
     return "/plugin/action.png"; 
    } 

    @Override 
    public String getDisplayName() { 
     return "ExampleAction"; 
    } 

    @Override 
    public String getUrlName() { 
     return "ExampleActionUrl"; 
    } 

    public AbstractBuild<?,?> getBuild() { 
     return this.build; 
    } 
} 

的Java Publisher类例如:

package tryPublisher.tryPublisher; 

import java.io.IOException; 

import hudson.Launcher; 
import hudson.model.AbstractBuild; 
import hudson.model.BuildListener; 
import hudson.tasks.BuildStepMonitor; 
import hudson.tasks.Publisher; 

public class ExamplePublisher extends Publisher { 

    @Override 
    public BuildStepMonitor getRequiredMonitorService() { 
     return BuildStepMonitor.NONE; 
    } 

    @Override 
    public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, 
      BuildListener listener) throws InterruptedException, IOException { 

     build.getActions().add(new ExampleAction(build)); 

     return true; 
    } 

} 

的.jelly文件必须在正确的资源地图插件项目。在与实现Action的Java类的名称相同的映射中。 .jelly的名字也很重要。

相关问题