Вы можете решить это с помощью специального CSS, установив атрибут display thead в none:
Пример:
div[id="testForm:first"] thead {
display:none;
}
, если ваш JSF похож на этот:
<h:form id="testForm">
<p:dataTable id="first">
...
<p:/dataTable>
</h:form>
Используйте quotemeta
или \Q...\E
.
Рассмотрим следующую тестовую программу, которая соответствует $str
as-is, с quotemeta
и с \Q...... \E
:
#! /usr/bin/perl
use warnings;
use strict;
my $str = "www.abc.com";
my @test = (
"www.abc.com",
"www/abc!com",
);
sub ismatch($) { $_[0] ? "MATCH" : "NO MATCH" }
my @match = (
[ as_is => sub { ismatch /$str/ } ],
[ qmeta => sub { my $qm = quotemeta $str; ismatch /$qm/ } ],
[ qe => sub { ismatch /\Q$str\E/ } ],
);
for (@test) {
print "\$_ = '$_':\n";
foreach my $method (@match) {
my($name,$match) = @$method;
print " - $name: ", $match->(), "\n";
}
}
Заметьте в выводе, что использование строки as-is может привести к ложным совпадениям:
$ ./try $_ = 'www.abc.com': - as_is: MATCH - qmeta: MATCH - qe: MATCH $_ = 'www/abc!com': - as_is: MATCH - qmeta: NO MATCH - qe: NO MATCH
Для программ, которые принимают ненадежные входные данные, будьте предельно осторожны с использованием таких потенциально неприятных битов, как регулярные выражения: это может привести к неожиданным ошибкам во время выполнения, к уязвимостям в отказе в обслуживании и к дырам в безопасности.
. Лучший способ сделать это - использовать \Q
для начала строки, заключенной в кавычки, и \E
для ее окончания.
my $foo = 'www.abc.com';
$bar =~ /blah\Q$foo\Eblah/;
Вы также можете использовать quotemeta
для переменной сначала. Например,
my $quoted_foo = quotemeta($foo);
трюк \Q
документирован в perlre в разделе "Escape Sequences."