Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
ba7a043e
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ba7a043e
编写于
5月 21, 2014
作者:
Y
youyong205
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add project delete function
上级
0b8f275e
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
77 addition
and
294 deletion
+77
-294
cat-broker/src/main/resources/META-INF/plexus/components.xml
cat-broker/src/main/resources/META-INF/plexus/components.xml
+50
-287
cat-home/src/main/java/com/dianping/cat/report/page/userMonitor/graph/DefaultUserMonitGraphCreator.java
.../page/userMonitor/graph/DefaultUserMonitGraphCreator.java
+3
-5
cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java
...main/java/com/dianping/cat/system/page/config/Action.java
+2
-0
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
...ain/java/com/dianping/cat/system/page/config/Handler.java
+15
-1
cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java
...n/java/com/dianping/cat/system/page/config/JspViewer.java
+2
-0
cat-home/src/main/webapp/jsp/system/project/project.jsp
cat-home/src/main/webapp/jsp/system/project/project.jsp
+5
-1
未找到文件。
cat-broker/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
ba7a043e
<plexus>
<components>
<component>
<role>
com.dianping.cat.DomainManager
</role>
<implementation>
com.dianping.cat.DomainManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.core.dal.HostinfoDao
</role>
</requirement>
</requirements>
<role>
com.dianping.cat.broker.api.page.IpService
</role>
<implementation>
com.dianping.cat.broker.api.page.IpService
</implementation>
</component>
<component>
<role>
com.dianping.cat.task.TaskManager
</role>
<implementation>
com.dianping.cat.task.TaskManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.dal.TaskDao
</role>
</requirement>
</requirements>
<role>
com.dianping.cat.broker.api.page.RequestUtils
</role>
<implementation>
com.dianping.cat.broker.api.page.RequestUtils
</implementation>
</component>
<component>
<role>
com.dianping.cat.ServerConfigManager
</role>
<implementation>
com.dianping.cat.ServerConfigManager
</implementation>
</component>
<component>
<role>
com.dianping.cat.statistic.ServerStatisticManager
</role>
<implementation>
com.dianping.cat.statistic.ServerStatisticManager
</implementation>
</component>
<component>
<role>
com.dianping.cat.message.spi.core.MessagePathBuilder
</role>
<implementation>
com.dianping.cat.message.spi.core.DefaultMessagePathBuilder
</implementation>
</component>
<component>
<role>
com.dianping.cat.analysis.MessageAnalyzerManager
</role>
<implementation>
com.dianping.cat.analysis.DefaultMessageAnalyzerManager
</implementation>
</component>
<component>
<role>
com.dianping.cat.message.spi.core.TcpSocketReceiver
</role>
<implementation>
com.dianping.cat.message.spi.core.TcpSocketReceiver
</implementation>
<role>
com.dianping.cat.broker.api.page.MonitorManager
</role>
<implementation>
com.dianping.cat.broker.api.page.MonitorManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.statistic.ServerStatisticManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.message.spi.MessageCodec
</role>
<role-hint>
plain-text
</role-hint>
<role>
com.dianping.cat.config.UrlPatternConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.
message.spi.core.MessageHandler
</role>
<role>
com.dianping.cat.
broker.api.page.IpService
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.message.spi.core.MessageHandler
</role>
<implementation>
com.dianping.cat.message.spi.core.DefaultMessageHandler
</implementation>
</component>
<component>
<role>
com.dianping.cat.config.UrlPatternHandler
</role>
<implementation>
com.dianping.cat.config.DefaultUrlPatternHandler
</implementation>
</component>
<component>
<role>
com.dianping.cat.config.UrlPatternConfigManager
</role>
<implementation>
com.dianping.cat.config.UrlPatternConfigManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.config.UrlPatternHandler
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.storage.dump.MessageBucket
</role>
<role-hint>
local
</role-hint>
<implementation>
com.dianping.cat.storage.dump.LocalMessageBucket
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
<requirements>
<requirement>
<role>
com.dianping.cat.message.spi.MessageCodec
</role>
<role-hint>
plain-text
</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.storage.dump.MessageBucketManager
</role>
<role-hint>
local
</role-hint>
<implementation>
com.dianping.cat.storage.dump.LocalMessageBucketManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.message.spi.core.MessagePathBuilder
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.statistic.ServerStatisticManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
org.unidal.initialization.Module
</role>
<role-hint>
cat-core
</role-hint>
<implementation>
com.dianping.cat.CatCoreModule
</implementation>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
config
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
config
</logical-table-name>
<physical-table-name>
config
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
<implementation>
com.dianping.cat.core.config.ConfigDao
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
</requirement>
</requirements>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
dailygraph
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
dailygraph
</logical-table-name>
<physical-table-name>
dailygraph
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
dailyreport
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
dailyreport
</logical-table-name>
<physical-table-name>
dailyreport
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
graph
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<role>
org.unidal.dal.jdbc.datasource.JdbcDataSourceDescriptorManager
</role>
<implementation>
org.unidal.dal.jdbc.datasource.JdbcDataSourceDescriptorManager
</implementation>
<configuration>
<logical-table-name>
graph
</logical-table-name>
<physical-table-name>
graph
</physical-table-name>
<data-source-name>
cat
</data-source-name>
<datasourceFile>
/data/appdatas/cat/datasources.xml
</datasourceFile>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
hostinfo
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<role>
org.unidal.web.mvc.model.ModuleRegistry
</role>
<implementation>
org.unidal.web.mvc.model.ModuleRegistry
</implementation>
<configuration>
<
logical-table-name>
hostinfo
</logical-table-name
>
<physical-table-name>
hostinfo
</physical-table-nam
e>
<
data-source-name>
cat
</data-source-name
>
<
modules
>
<module
default=
"true"
>
com.dianping.cat.broker.api.ApiModule
</modul
e>
<
/modules
>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
monthreport
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
monthreport
</logical-table-name>
<physical-table-name>
monthreport
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
<role>
com.dianping.cat.broker.api.ApiModule
</role>
<implementation>
com.dianping.cat.broker.api.ApiModule
</implementation>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
project
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
project
</logical-table-name>
<physical-table-name>
project
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
report
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
report
</logical-table-name>
<physical-table-name>
report
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
report-content
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
report-content
</logical-table-name>
<physical-table-name>
report_content
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
task
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
task
</logical-table-name>
<physical-table-name>
task
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
org.unidal.dal.jdbc.mapping.TableProvider
</role>
<role-hint>
weeklyreport
</role-hint>
<implementation>
org.unidal.dal.jdbc.mapping.SimpleTableProvider
</implementation>
<configuration>
<logical-table-name>
weeklyreport
</logical-table-name>
<physical-table-name>
weeklyreport
</physical-table-name>
<data-source-name>
cat
</data-source-name>
</configuration>
</component>
<component>
<role>
com.dianping.cat.core.dal.DailyGraphDao
</role>
<implementation>
com.dianping.cat.core.dal.DailyGraphDao
</implementation>
<role>
com.dianping.cat.broker.api.page.single.Handler
</role>
<implementation>
com.dianping.cat.broker.api.page.single.Handler
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
<role>
com.dianping.cat.broker.api.page.single.JspViewer
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.core.dal.DailyReportDao
</role>
<implementation>
com.dianping.cat.core.dal.DailyReportDao
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
<role>
com.dianping.cat.broker.api.page.MonitorManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.core.dal.GraphDao
</role>
<implementation>
com.dianping.cat.core.dal.GraphDao
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
<role>
com.dianping.cat.broker.api.page.RequestUtils
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.
core.dal.HostinfoDao
</role>
<implementation>
com.dianping.cat.
core.dal.HostinfoDao
</implementation>
<role>
com.dianping.cat.
broker.api.page.single.JspViewer
</role>
<implementation>
com.dianping.cat.
broker.api.page.single.JspViewer
</implementation>
<requirements>
<requirement>
<role>
org.unidal.
dal.jdbc.QueryEngine
</role>
<role>
org.unidal.
web.mvc.view.model.ModelHandler
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.
core.dal.MonthlyReportDao
</role>
<implementation>
com.dianping.cat.
core.dal.MonthlyReportDao
</implementation>
<role>
com.dianping.cat.
broker.api.page.MonitorManager
</role>
<implementation>
com.dianping.cat.
broker.api.page.MonitorManager
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngin
e
</role>
<role>
com.dianping.cat.broker.api.page.IpServic
e
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.core.dal.ProjectDao
</role>
<implementation>
com.dianping.cat.core.dal.ProjectDao
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
<role>
com.dianping.cat.config.UrlPatternConfigManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.core.dal.HourlyReportDao
</role>
<implementation>
com.dianping.cat.core.dal.HourlyReportDao
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
</requirement>
</requirements>
<role>
com.dianping.cat.broker.api.page.IpService
</role>
<implementation>
com.dianping.cat.broker.api.page.IpService
</implementation>
</component>
<component>
<role>
com.dianping.cat.co
re.dal.HourlyReportContentDao
</role>
<implementation>
com.dianping.cat.co
re.dal.HourlyReportContentDao
</implementation>
<role>
com.dianping.cat.co
nfig.UrlPatternConfigManager
</role>
<implementation>
com.dianping.cat.co
nfig.UrlPatternConfigManager
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
<role>
com.dianping.cat.core.config.ConfigDao
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.core.dal.TaskDao
</role>
<implementation>
com.dianping.cat.core.dal.TaskDao
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
<role>
com.dianping.cat.config.UrlPatternHandler
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.core.
dal.WeeklyReport
Dao
</role>
<implementation>
com.dianping.cat.core.
dal.WeeklyReport
Dao
</implementation>
<role>
com.dianping.cat.core.
config.Config
Dao
</role>
<implementation>
com.dianping.cat.core.
config.Config
Dao
</implementation>
<requirements>
<requirement>
<role>
org.unidal.dal.jdbc.QueryEngine
</role>
...
...
@@ -322,47 +102,30 @@
</requirements>
</component>
<component>
<role>
com.dianping.cat.message.spi.codec.BufferWriter
</role>
<role-hint>
html
</role-hint>
<implementation>
com.dianping.cat.message.spi.core.HtmlEncodingBufferWriter
</implementation>
<role>
com.dianping.cat.broker.api.page.RequestUtils
</role>
<implementation>
com.dianping.cat.broker.api.page.RequestUtils
</implementation>
</component>
<component>
<role>
com.dianping.cat.message.spi.MessageCodec
</role>
<role-hint>
html
</role-hint>
<implementation>
com.dianping.cat.message.spi.core.HtmlMessageCodec
</implementation>
<role>
com.dianping.cat.broker.api.page.batch.Handler
</role>
<implementation>
com.dianping.cat.broker.api.page.batch.Handler
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.message.spi.codec.BufferWriter
</role>
<role-hint>
html
</role-hint>
<role>
com.dianping.cat.broker.api.page.batch.JspViewer
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.broker.api.page.MonitorManager
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.message.spi.MessageCodec
</role>
<role-hint>
waterfall
</role-hint>
<implementation>
com.dianping.cat.message.spi.core.WaterfallMessageCodec
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.message.spi.codec.BufferWriter
</role>
<role-hint>
html
</role-hint>
<role>
com.dianping.cat.broker.api.page.RequestUtils
</role>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.storage.BucketManager
</role>
<implementation>
com.dianping.cat.storage.DefaultBucketManager
</implementation>
</component>
<component>
<role>
com.dianping.cat.storage.Bucket
</role>
<role-hint>
java.lang.String-report
</role-hint>
<implementation>
com.dianping.cat.storage.report.LocalReportBucket
</implementation>
<instantiation-strategy>
per-lookup
</instantiation-strategy>
<role>
com.dianping.cat.broker.api.page.batch.JspViewer
</role>
<implementation>
com.dianping.cat.broker.api.page.batch.JspViewer
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.ServerConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.message.spi.core.MessagePathBuilder
</role>
<role>
org.unidal.web.mvc.view.model.ModelHandler
</role>
</requirement>
</requirements>
</component>
...
...
cat-home/src/main/java/com/dianping/cat/report/page/userMonitor/graph/DefaultUserMonitGraphCreator.java
浏览文件 @
ba7a043e
...
...
@@ -142,7 +142,7 @@ public class DefaultUserMonitGraphCreator extends BaseGraphCreator implements Us
int
id
=
segment
.
getId
();
if
(
key
.
endsWith
(
Monitor
.
HIT
))
{
count
[
id
]
=
segment
.
getCount
();
count
[
id
]
=
segment
.
getCount
()
*
10
;
avg
[
id
]
=
segment
.
getAvg
();
}
else
if
(
key
.
endsWith
(
Monitor
.
ERROR
))
{
error
[
id
]
=
segment
.
getCount
();
...
...
@@ -151,12 +151,10 @@ public class DefaultUserMonitGraphCreator extends BaseGraphCreator implements Us
}
for
(
int
i
=
0
;
i
<
60
;
i
++)
{
double
countNumber
=
count
[
i
]
*
10.0
;
double
errerNumber
=
error
[
i
];
double
sum
=
countNumber
+
errerNumber
;
double
sum
=
count
[
i
]
+
error
[
i
];
if
(
sum
>
0
)
{
successPercent
[
i
]
=
count
Number
*
100
/
sum
;
successPercent
[
i
]
=
count
[
i
]
*
100
/
sum
;
}
else
{
successPercent
[
i
]
=
100
;
}
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Action.java
浏览文件 @
ba7a043e
...
...
@@ -6,6 +6,8 @@ public enum Action implements org.unidal.web.mvc.Action {
PROJECT_UPDATE
(
"update"
),
PROJECT_UPDATE_SUBMIT
(
"updateSubmit"
),
PROJECT_DELETE
(
"projectDelete"
),
AGGREGATION_ALL
(
"aggregations"
),
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/Handler.java
浏览文件 @
ba7a043e
...
...
@@ -109,6 +109,17 @@ public class Handler implements PageHandler<Context> {
m_exceptionConfigManager
.
deleteExceptionLimit
(
payload
.
getDomain
(),
payload
.
getException
());
}
private
void
deleteProject
(
Payload
payload
)
{
try
{
Project
proto
=
new
Project
();
proto
.
setId
(
payload
.
getProjectId
());
proto
.
setKeyId
(
payload
.
getProjectId
());
m_projectDao
.
deleteByPK
(
proto
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
}
private
void
graphEdgeConfigAdd
(
Payload
payload
,
Model
model
)
{
String
type
=
payload
.
getType
();
String
from
=
payload
.
getFrom
();
...
...
@@ -203,7 +214,10 @@ public class Handler implements PageHandler<Context> {
updateProject
(
payload
);
model
.
setProjects
(
queryAllProjects
());
break
;
case
PROJECT_DELETE:
deleteProject
(
payload
);
model
.
setProjects
(
queryAllProjects
());
break
;
case
AGGREGATION_ALL:
model
.
setAggregationRules
(
m_aggreationConfigManager
.
queryAggregationRules
());
break
;
...
...
cat-home/src/main/java/com/dianping/cat/system/page/config/JspViewer.java
浏览文件 @
ba7a043e
...
...
@@ -16,6 +16,8 @@ public class JspViewer extends BaseJspViewer<SystemPage, Action, Context, Model>
return
JspFile
.
PROJECT_UPATE
.
getPath
();
case
PROJECT_UPDATE_SUBMIT:
return
JspFile
.
PROJECT_ALL
.
getPath
();
case
PROJECT_DELETE:
return
JspFile
.
PROJECT_ALL
.
getPath
();
case
AGGREGATION_ALL:
return
JspFile
.
AGGREGATION_ALL
.
getPath
();
case
AGGREGATION_DELETE:
...
...
cat-home/src/main/webapp/jsp/system/project/project.jsp
浏览文件 @
ba7a043e
...
...
@@ -17,6 +17,9 @@
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
$
(
'
#projectList
'
).
addClass
(
'
active
'
);
$
(
"
.delete
"
).
bind
(
"
click
"
,
function
()
{
return
confirm
(
"
确定要删除此项目吗(不可恢复)?
"
);
});
init
();
});
</script>
...
...
@@ -46,7 +49,8 @@
<td>
${item.projectLine}
</td>
<td>
${item.email}
</td>
<td>
${item.owner}
</td>
<td><a
class=
"btn btn-primary btn-small"
href=
"?op=update&projectId=${item.id}"
>
编辑
</a></td>
<td><a
class=
"btn btn-primary btn-small"
href=
"?op=update&projectId=${item.id}"
>
编辑
</a>
<a
class=
"btn btn-danger btn-small delete"
href=
"?op=projectDelete&projectId=${item.id}"
>
删除
</a></td>
</tr>
</c:forEach></tbody>
</table>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录