2013-06-28 26 views
0

以下是我的模板代码:未定义子程序及主要:: ThrowTemplateError

<html> 
<head> 
<style> 

.table 
{ 
    display:table; 
    border-collapse:separate; 
    border-spacing:2px; 
} 
.thead 
{ 
    display:table-header-group; 
    color:white; 
    font-weight:bold; 
    background-color:grey; 
} 
.tbody 
{ 
    display:table-row-group; 
} 

.tr 
{ 
    display:table-row; 
} 
.td 
{ 
    display:table-cell; 
    border:1px solid black; 
    padding:1px; 
} 
.tr.editing .td INPUT 
width:100px; 
} 
</style> 
<script type = "text/javascript" src = "jquery.min.js"></script> 
<script> 
var counter = 0; 
var txt1 = "group_save"; 
function addNew() { 
// Get the main Div in which all the other divs will be added 
var mainContainer = document.getElementById('mainContainer'); 
// Create a new div for holding text and button input elements 
var newDiv = document.createElement('div'); 
// Create a new text input 
var newText = document.createElement('input'); 
newText.type = "input"; 
newText.name = txt1+counter; 
//newText.value = counter; 
// Create a new button input 
var newDelButton = document.createElement('input'); 
newDelButton.type = "button"; 
newDelButton.value = "Delete"; 
// Append new text input to the newDiv 
newDiv.appendChild(newText); 
// Append new button input to the newDiv 
newDiv.appendChild(newDelButton); 
// Append newDiv input to the mainContainer div 
mainContainer.appendChild(newDiv); 
counter++; 
// Add a handler to button for deleting the newDiv from the mainContainer 
newDelButton.onclick = function() { 
mainContainer.removeChild(newDiv); 
} 
} 
    function edit(element){ 
    var tr = jQuery(element).parent().parent(); 
    if(!tr.hasClass("editing")) { 
      tr.addClass("editing"); 
      tr.find("DIV.td").each(function(){ 
        if(!jQuery(this).hasClass("action")){ 
          var value = jQuery(this).text(); 

          jQuery(this).text(""); 
          jQuery(this).append('<input type="text" value="'+value+'" />'); 

        } else { 
          jQuery(this).find("BUTTON").text("save"); 
        } 
      }); 
    } else { 
      tr.removeClass("editing"); 
      tr.find("DIV.td").each(function(){ 
        if(!jQuery(this).hasClass("action")){ 
          var value1 = jQuery(this).find("INPUT").val(); 
          alert(value1); 
          jQuery(this).text(value1); 
          jQuery(this).find("INPUT").remove(); 
        } else { 
          jQuery(this).find("BUTTON").text("edit"); 
        } 
      }); 
    } 
} 
</script> 

</head> 
<body > 
<form name="group" method="post" action="process.cgi"> 
<div id="mainContainer"> 
<div><input type="button" value="Add" onClick="addNew()"></div> 
</div> 
<div><input type = "submit" value = "Save"></div> 
</form> 
[% IF count > 0%] 

<b>Details of Groups</b><br> 

<div class= "table"> 
<div class = "thead"> 
    <div class = "tr"> 

<div class = "td">ID</div> 
<div class = "td">GROUP NAME</div> 
<div class = "td">GROUP DESCRIPTION</div> 
<div class = "td">IS ACTIVE</div> 
<div class = "td"></div> 
</div> 
</div> 

<div class= "tbody"> 

[%- SET i = 0; 
WHILE i < id.size; -%] 

<form class = "tr"> 
<div class = "td">&nbsp; [% id.$i %]<br/></div> 
<div class = "td">&nbsp; [% group_name.$i %]<br/></div> 
<div class = "td">&nbsp; [% group_desc.$i %]<br/></div> 
<div class = "td">[% actv.$i %]<br/></div> 
<div class = "td action" ><button type="button" onclick="edit(this);">edit</button> </div> 
<form> 
[%-  SET i = i + 1; 
END -%] 
</div> 
</body> 
</html> 

而我跑我的CGI代码,我得到了下面的模板error.i检查了我的代码,并没有发现明显的,这给error.could任何人请帮我追踪这个错误。所以,我可以去其余的修改文件。这就是我想保存更改的内容在数据库中。

更新:

错误--- 未定义子程序&主要:: ThrowTemplateError叫在/var/www/html/centralbugzilla/groups.cgi线24

线24号是: $ template-> process(“list/group.html.tmpl”,$ vars) || ThrowTemplateError($模板 - >错误());

+0

哪个错误?请发布:D – 2013-06-28 08:35:59

+0

我发布了错误 –

+0

实际上你没有一个名为'ThrowTemplateError'的子程序。尝试使用'$ template-> ThrowTemplateError' – 2013-06-28 08:50:13

回答

1

首先,你不应该假设人们会知道你正在使用的模板系统。它看起来像你正在使用模板工具包,但有许多用于Perl的模板引擎。

其次,这里的模板是一个完整的红色鲱鱼。问题出在你的Perl代码中。当模板无法成功处理时,您的代码会调用一个名为ThrowTemplateError的函数,但Perl无法在任何地方找到该函数。该功能在哪里定义? (好吧,我想它可能看起来像问题是在你的模板,而不是代码。你的模板有一些错误,这意味着TT无法处理它,因此调用缺少的函数。你的模板中的错误将意味着缺失的函数不再被调用,但它仍然缺失,下一次你不小心破坏你的模板时会再次出现问题,所以最好现在就修复它)

+1

我去错误,我没有结束我的if循环 –

+0

Jenifer_justin:你是否修复了关于'ThrowTemplateError'的错误? – innaM

+0

@Jenifer_justin:这就是我为什么添加了我的最终(括号内)段落的原因。当您的模板中也存在错误时,您只会在Perl代码中看到错误。但即使您修复了模板,Perl代码中的问题仍然存在。 'ThrowTemplateError'子程序仍然缺失。你应该花时间来解决这个问题。 –

相关问题